无法从 SeeJson 单元测试中获取错误
unable to get error from SeeJson unit test
我有一个检查 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 盒子上的那个错误是什么,而不是在本地。
有没有办法让它在失败时输出响应包含的内容?
由于 JSON 响应中的格式错误,您通常会收到此错误。
请记住,您的测试正在等待有效的 JSON 响应,因此在这种情况下,这就是您需要解决的问题。
- 你能上传一些你的控制器代码吗?因为那是 JSON 的来源。
- 检查 storage/logs/framework 下的框架日志(如果文件很大,我建议删除它并再次 运行 请求,您将首先记录错误)
当测试框架未能提供任何体面的指示时,我总是觉得很烦人 它看到了什么 当它没有看到我告诉它期望的东西时。除了围绕断言包装一个 try...catch...report...rethrow 之外,我知道没有合适的方法让 MakesHttpRequests
特征仅在测试失败时吐出它看到的内容。
但是,要调试它,您可以继续这样做,并使用 $this->response
查看响应中的内容。
我有一个检查 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 盒子上的那个错误是什么,而不是在本地。
有没有办法让它在失败时输出响应包含的内容?
由于 JSON 响应中的格式错误,您通常会收到此错误。 请记住,您的测试正在等待有效的 JSON 响应,因此在这种情况下,这就是您需要解决的问题。
- 你能上传一些你的控制器代码吗?因为那是 JSON 的来源。
- 检查 storage/logs/framework 下的框架日志(如果文件很大,我建议删除它并再次 运行 请求,您将首先记录错误)
当测试框架未能提供任何体面的指示时,我总是觉得很烦人 它看到了什么 当它没有看到我告诉它期望的东西时。除了围绕断言包装一个 try...catch...report...rethrow 之外,我知道没有合适的方法让 MakesHttpRequests
特征仅在测试失败时吐出它看到的内容。
但是,要调试它,您可以继续这样做,并使用 $this->response
查看响应中的内容。