assertRedirectedToRoute 在 Laravel 5.1 中不工作

assertRedirectedToRoute not working in 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 对象。有什么想法吗?

尝试替换

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

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

您已经在路线上admin.patient.edit

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

我遇到了同样的问题。

请参考这个link. People has been complaining. Turn out that the way we use it was wrong. You can refer to the right way here

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

我们必须把它改成$this->get()