【问题标题】:Laravel's call method bypasses filtersLaravel 的调用方法绕过过滤器
【发布时间】:2014-03-19 17:05:23
【问题描述】:

我正在尝试使用 PHPUnit 为 Laravel 运行单元测试。

我对函数的调用似乎到达了控制器,但是,它们似乎绕过了我的过滤器。过滤器用于进行用户验证、会话令牌等。该调用似乎直接转到控制器并忘记了过滤器。

    public function testBasicExample(){

        $response = $this->call('GET', 'URL_Here', array('param_1' => 'value_1', 'param_2' => 'value_2' ));

        echo $response->getContent(); /**This should not be returning true if values are wrong and it is **/

        $this->assertTrue($this->client->getResponse()->isOk());

}

有什么想法吗?

【问题讨论】:

    标签: php unit-testing laravel-4 phpunit


    【解决方案1】:

    根据 Laravel 文档,在测试环境中路由过滤器被禁用。您可以使用以下调用来启用它们:

    Route::enableFilters();
    

    您可以阅读有关此here 的更多信息。该章末尾的 Note 块回答了您的问题。

    【讨论】:

    • 你知道Request对象是否也被禁用了吗?
    • 不应该。您是否遇到任何问题?它所做的只是设置 Request 对象,使其适合正在运行的控制台环境
    • 我是。当我从浏览器发送请求时,我可以访问标头,但是当我使用 PHPUnit 时它们不会访问。
    • 哦,enableFilters() 起作用了,谢谢!
    猜你喜欢
    • 2014-09-23
    • 1970-01-01
    • 2019-02-21
    • 2013-04-13
    • 1970-01-01
    • 2020-09-09
    • 2016-05-07
    • 2016-06-24
    • 2011-06-20
    相关资源
    最近更新 更多