【问题标题】:assertRedirectedToRoute not working in Laravel 5.1assertRedirectedToRoute 在 Laravel 5.1 中不起作用
【发布时间】:2019-05-24 23:49:12
【问题描述】:

控制器代码:

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

【问题讨论】:

    标签: phpunit laravel-5.1


    【解决方案1】:

    尝试替换

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

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

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

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

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。

      请参考这个link。人们一直在抱怨。原来我们使用它的方式是错误的。正确的方法可以参考here

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

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

      【讨论】:

        猜你喜欢
        • 2015-11-19
        • 1970-01-01
        • 1970-01-01
        • 2016-01-28
        • 2016-10-20
        • 2017-02-27
        • 2016-07-02
        • 2018-06-25
        • 2016-05-11
        相关资源
        最近更新 更多