Как избавиться от ошибки 422 laravel в модульном тесте? - PullRequest
0 голосов
/ 21 октября 2018

Итак, я пишу юнит-тесты для веб-приложения laravel 5.7, и когда я проверяю логин, он выдает ошибку 422 (я знаю, что это как-то связано с недействительными данными, я просто не знаю, как это исправить)

public function testRegularUserLogin_CreatedRegularUse_ReturnsStoreView()
{
    $regularUser = factory( User::class)->create();

    $response = $this->json('POST','/login',
        [
            'email' => $regularUser->email,
            'password' => $regularUser->password,
            '_token' => csrf_token()
        ]);


    $response->assertStatus(200);


}

Я пытался использовать токен csrf в заголовке

Это вывод, который тест дает мне

1 Ответ

0 голосов
/ 28 августа 2019

Вы должны просто издеваться над аутентификацией: сделать что-то вроде этого

public function getFakeClient()
{
    $client = factory(App\User::class)->create();
    $this->be($client);

    Auth::shouldReceive('user')->andReturn($this->client);
    Auth::shouldReceive('check')->andReturn(true);

    return $this->client;
}

, затем

$user = $this->getFakeClient();
$user->shouldReceive('posts')->once()->andReturn(array('posts'));

, как рекомендовано самим Тейлором Отвеллом здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...