Laravel 无法从SeeJson单元测试中获取错误
我有一个测试,检查api是否有json响应Laravel 无法从SeeJson单元测试中获取错误,laravel,phpunit,Laravel,Phpunit,我有一个测试,检查api是否有json响应 public function test_search_get_place_details() { $this->post('/api/searchVenue', ['placeId' => 'ChIJXZE0JMLeekgR2meph0M9Jm41221212112']); $this->SeeJson([ 'Town' => 'B
public function test_search_get_place_details()
{
$this->post('/api/searchVenue', ['placeId' => 'ChIJXZE0JMLeekgR2meph0M9Jm41221212112']);
$this->SeeJson([
'Town' => 'Birkenhead',
]);
}
这个测试可以正常工作并断言正确,但当它失败时,我得到的是
Time: 1.42 seconds, Memory: 27.00MB
There was 1 error:
1) SearchTest::test_search_get_place_details
ErrorException: Invalid argument supplied for foreach()
/home/ubuntu/workspace/vendor/laravel/framework/src/Illuminate/Support/Arr.php:494
/home/ubuntu/workspace/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:232
/home/ubuntu/workspace/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:257
/home/ubuntu/workspace/tests/SearchTest.php:41
我假设这是因为响应是典型的laravel错误,而不是json。但我需要知道错误是什么,因为它发生在我的CI框上,而不是本地
有没有办法让它输出失败时响应包含的内容?由于JSON响应中的格式错误,通常会出现此错误。 请记住,您的测试正在等待一个有效的JSON响应,因此在这种情况下,您需要解决这个问题
当一个测试框架没有提供任何关于它看到了什么的适当指示,而它没有看到我告诉它的预期时,我总是觉得很烦人。除了包装一个try…catch…report…围绕断言进行重述之外,我知道没有什么好方法可以让
MakesHttpRequests
特性在测试失败时吐出它所看到的内容
但是,要调试它,您可以继续这样做,并使用
$this->response
查看响应中的内容。很好,我很懒,没有将异常响应转换为json数组。现在这样做,我得到一个有效的错误。谢谢在使用->seeJson()
之前,我添加了一个->seeStatusCode(200)
,它告诉我错误:“断言401与预期的200匹配失败。”