Does PHPUnit mir nicht erlauben, kehrt Werte auf der Grundlage der übergebenen Argumente in der folgenden gibt einen 500-Fehler angeben.PHPUnit variieren Mock Methode Rückgabewert basierend auf Argumente
// Mock Sitzungswerte
$container->get('session')
->method('get')
->with(SESSION_FILTER_MONTH)
->willReturn('2017-05');
$container->get('session')
->method('get')
->with(SESSION_FILTER_FUND)
->willReturn(1);
In meiner app, wirft die folgende Zeile die Ausnahme:
$fundId = $container->get('session')->get(SESSION_FILTER_MONTH); // works OK
$fundId = $container->get('session')->get(SESSION_FILTER_FUND); // breaks: should return 1 in my tests
Allerdings, wenn ich Mock eine einzige Methode Erklärung nur, wie:
// $container->get('session')
// ->method('get')
// ->with(SESSION_FILTER_MONTH)
// ->willReturn('test_return');
$container->get('session')
->method('get')
->with(SESSION_FILTER_FUND)
->willReturn('test_return_fund');
//...
// $fundId = $container->get('session')->get(SESSION_FILTER_MONTH);
$fundId = $container->get('session')->get(SESSION_FILTER_FUND); // works this time!
... dann funktioniert es OK. Es scheint, dass es nur eine einzige Methode Scheindeklaration dauert, obwohl ich ein anderes Argument mit mit() -Methode bereitstellen - Ich möchte den Rückgabewert basierend darauf variieren.
Ich bekomme nicht wirklich viel Informationen von der Konsole, es sagt mir nur Failed asserting that 500 matches expected 302.
ohne eine Ausnahmebedingung. Ich habe sogar versucht, den Code in try..catch Block zu wickeln, aber ändert nicht die Ausgabe.
Danke, dass Sie mich auf dem richtigen Weg. Ich habe ursprünglich NULLs zurückbekommen, aber ich nehme an, dass die 'get'-Methode ein zweites Argument mit einem Standardwert hat, von dem ich nichts wusste. Also wechselte ich zu '[SESSION_FILTER_MONTH, null, 'return_value'],' - wollte nur erwähnen, dass encase jemand anderen einen ähnlichen Fehler macht, ohne es zu merken. Arbeite jetzt :) – Martyn