Laravel单元测试(响应不是视图)

时间:2018-07-20 14:43:53

标签: php laravel unit-testing

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

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

sudo apt install libpython2.7-dev:armhf

这是显示该视图的途径

/usr/include/python2.7/pyconfig.h:24:54: fatal error: arm-linux-gnueabihf/python2.7/pyconfig.h: No such file or directory
compilation terminated.
error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1

这是我的测试类和功能

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

还有一个附加功能:您可以使用$response->assertSeeText($string)来检查HTML中是否存在任何字符串。该方法几乎与您所做的($this->assertContains('unit', $response->content())一样,额外调用了strip_tags()

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

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

在测试案例中:

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

答案 1 :(得分:0)

在测试中,请尝试禁用“异常处理”以查看发生的情况。

$this->withoutExceptionHandling();

答案 2 :(得分:0)

这可能是重定向响应。

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