【问题标题】:Laravel Unit Test (The response is not a view)Laravel 单元测试(响应不是视图)
【发布时间】:2018-07-20 14:43:52
【问题描述】:

我正在对我的 Web 应用程序进行单元测试。我在 Laravel 和 PHP 单元测试方面的经验太年轻了。现在,我只是在摆弄 Laravel 单元测试。现在,我正在测试返回到路由的视图是否包含特定文本。很简单。这就是我所做的。

我创建了一个名为 unit_test.blade.php 的视图,其中包含以下内容

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    This is unit test
</body>
</html>

这是显示该视图的路径

Route::get('unit/test', function(){
   return view('unit_test');
});

这是我的测试类和函数

class ApiV2EventController extends TestCase
{


    public function testUnitTest()
    {
        $response = $this->get('unit/test');

        $response->assertViewHas('unit');
    }
}

我的测试功能很简单。它只是检查视图是否包含文本“单元”。但是当我在命令行中运行测试时,它给出了

There was 1 failure:

1) Tests\Feature\ApiV2EventController::testUnitTest
The response is not a view.

我正在返回路线中的视图。我的代码有什么问题?如何测试?

【问题讨论】:

  • 那不是单元测试,看起来像是验收测试
  • 但是我的代码有什么问题?不过我做得对。但没有给我预期的结果
  • 你不应该return View::make('unit_test'); 吗?
  • 这是laravel的老办法
  • 如果我设置了一个无效的视图(一个不存在的文件)我会得到同样的错误The response is not a view. 你可以通过在你的测试用例中执行echo $response-&gt;content(); 来获得准确呈现的 HTML 并检查输出。这将显示是否有任何其他错误。

标签: php laravel unit-testing


【解决方案1】:

在您的测试中尝试禁用异常处理以查看发生了什么。

$this->withoutExceptionHandling();

【讨论】:

    【解决方案2】:

    如 cmets 中所述,您可以在测试用例中使用 $response-&gt;content() 来检查实际呈现的 HTML。

    还有一点:您可以使用$response-&gt;assertSeeText($string) 检查HTML 中是否存在任何字符串。该方法与您所做的($this-&gt;assertContains('unit', $response-&gt;content()))差不多,只是额外调用了strip_tags()。

    另外,$response-&gt;assertViewHas() 在您将数据传递到视图时使用,例如

    Route::get('unit/test', function() {
        return view('unit_test', [
            'some_var' => 'some value',
        ]);
    });
    

    在测试用例中:

    $response = $this->get('unit/test');
    $response->assertViewHas('some_var');
    

    【讨论】:

      【解决方案3】:

      这很可能是重定向响应。

      例如,您未通过身份验证并请求受保护的路由,您将收到重定向响应以登录状态为 302。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 2014-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多