Laravel 无法从SeeJson单元测试中获取错误

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

我有一个测试,检查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…围绕断言进行重述之外,我知道没有什么好方法可以让
    MakesHttpRequests
    特性在测试失败时吐出它所看到的内容


    但是,要调试它,您可以继续这样做,并使用
    $this->response
    查看响应中的内容。

    很好,我很懒,没有将异常响应转换为json数组。现在这样做,我得到一个有效的错误。谢谢在使用
    ->seeJson()
    之前,我添加了一个
    ->seeStatusCode(200)
    ,它告诉我错误:“断言401与预期的200匹配失败。”