Итак, я пытаюсь протестировать функции регистрации и входа в проект Laravel 5.8, работающий на Homestead.
Моя проблема в том, что я не могу заставить тесты (для входа в систему и для регистрации) пройти функции assertAuthenticated () и assertAuthenticatedAs ().
Я создал функцию входа в систему с помощью php artisan make:auth
и не сильно изменился, просто создал поле «username» для использования вместо электронной почты.
Когда я тестирую такие вещи, как assertStatus()
, $this->get(url)
, все работает нормально, но когда я добавляю, например, строку $this->assertAuthenticatedAs($user)
, тест вылетает.
Это моя действительная функция прохождения:
public function test_login_valid_user()
{
$user = factory(User::class)->create();
$response = $this->post('/login', [
'username' => $user->username,
'password' => 'secret'
]);
$response->assertStatus(302);
}
Если я добавлю строку $this->assertAuthenticatedAs($user)
в конце, я получу следующую ошибку:
There was 1 failure:
1) Tests\Feature\Auth\LoginTest::test_login_valid_user
The current user is not authenticated.
Failed asserting that null is not null.
/home/vagrant/code/my_project/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithAuthentication.php:89
/home/vagrant/code/my_project/tests/Feature/Auth/LoginTest.php:39
То же самое происходит в моем тесте регистрации, после регистрации пользователя, когда я пытаюсь проверить $this->assertAuthenticated()
Я получаю ту же ошибку.
Итак, я подумал о сессионных проблемах, связанных с Vagrant / Homestead, но я только начал их использовать и не мог найти намека на это. И я очень плохо знаком с PHPUnit и тестированием в целом, я только начинаю понимать, как он работает.