laravel unit test从路由返回无效的JSON

时间:2017-04-10 13:21:41

标签: json laravel unit-testing laravel-5 login

我写了这个单元测试登录laravel

class LoginTest extends TestCase
{

/** @test */
    public function auth()
    {
       $this->withoutMiddleware();
    $this->visit('/login')
        ->post('/login', ['example@example.com', "password"=>"1234"])
        ->seeJson([
            "login"=>"true"
        ]);
    $this->get('/dashboard');

}

}

但我收到此错误

Invalid JSON was returned from the route. Perhaps an exception was thrown?

我如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我建议您使用Guzzle Library并向您发出请求,然后转储完整响应:

        $response = $http->request('POST', 'http://your_laravel_public/login', [
            'form_params'=>[
                'username' => 'example@example.com',
                'password' => '1234'
            ]
        ]);
        $response_array = json_decode((string) $response->getBody(), true);//use this to see the actual response
        dd($response_array);

这很有用,因为您可能稍后在项目中使用Passport或任何其他身份验证服务。此时,您需要发送标题以进行授权,而您无法通过本地laravel单元测试来执行此操作。

给它一个滚动。