assertRedirectedToRoute在Laravel 5.1中不起作用

时间:2015-11-26 19:52:41

标签: phpunit laravel-5.1

控制器代码:

return redirect()->route('admin.patient.edit', $patientId);

测试代码:

$this->visit(route('admin.patient.edit', $this->patient->id))
     ->press('Update');

$this->assertRedirectedToRoute('admin.patient.edit', [$this->patient->id]);

我得到的错误是:

Failed asserting that Illuminate\Http\Response Object (...) is an instance of class 
"Illuminate\Http\RedirectResponse".

我已经打印出来自测试内部和控制器内部的响应,它实际上是一个RedirectReponse对象。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试替换

$this->assertRedirectedToRoute('admin.patient.edit', [$this->patient->id]);

$this->assertRedirectedToAction('MyController@myMethod');

您已经在路线admin.patient.edit

一个路由应该是edit方法的GET请求,另一个应该是post方法的update()请求。您正在重定向到相同的路线(即GET路线)。 admin.patient.update将是该路线的更好名称

答案 1 :(得分:0)

我遇到了同样的问题。

请参阅此link。人们一直在抱怨。事实证明,我们使用它的方式是错误的。您可以参考正确的方法here

无论何时我们想使用$this->assertRedirectedToRoute($route)$this->assertRedirectedToAction($action)或类似的东西,我们都不能使用$this->visit()

我们必须将其更改为$this->get()