0
不PHPUnit的不允許我根據傳入的參數指定返回值下面給出一個500錯誤:PHPUnit的改變基於參數模擬方法的返回值
//模擬會話值
$container->get('session')
->method('get')
->with(SESSION_FILTER_MONTH)
->willReturn('2017-05');
$container->get('session')
->method('get')
->with(SESSION_FILTER_FUND)
->willReturn(1);
在我的應用程序,以下行拋出該異常:
$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
但是,如果我只有一個方法模擬聲明,如:
// $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!
...然後它工作正常。似乎它只需要一個單一的方法模擬聲明,即使我提供了與()方法不同的參數 - 我希望返回值根據不同而有所不同。
我並沒有真正從控制檯獲得太多信息,它只是告訴我Failed asserting that 500 matches expected 302.
沒有異常消息。我甚至嘗試在try..catch塊中包裝代碼,但不會更改輸出。
謝謝,這讓我在正確的軌道上。最初我得到了NULL,但是我猜'get'方法有第二個參數,它帶有一個我不知道的默認值。所以我改成了'[SESSION_FILTER_MONTH,null,'return_value'],' - 只是想提一下其他人在沒有意識到的情況下犯了類似的錯誤。現在工作:) – Martyn