我有一个测试,检查api是否有json响应
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盒子上发生了什么错误,而不是本地。
无论如何都要让它输出失败时响应包含的内容?
答案 0 :(得分:2)
当测试框架未能提供任何正确的指示时,我总觉得很烦人,因为当它没有看到我告诉它的预期时,它看到了什么。除了包装一个try ... catch ...报告...重新抛出断言之外,我知道没有合适的方法可以让$this->response
特征只在测试失败时吐出它所看到的内容。
但是,要调试它,您可以继续执行此操作,并使用include()
查看响应中的内容。
答案 1 :(得分:1)
由于JSON响应中的格式错误,通常会出现此错误。 请记住,您的测试正在等待有效的JSON响应,因此在这种情况下您需要修复它。