Здравствуйте. В интернете много примеров как проводить функциональное тестирование. Основные методы я выучил и научился применять, писать тесты. Всё проходит так как я ожидаю и всё хорошо. Но теперь возникает вопрос: какую область маршрутов должны охватывать тесты?
Начну с POST запросов. Мой проект (браузерная онлайн текстовая игра) не может существовать без начальных данных в бд, поэтому одним из основных и первых тестов является проверка на то что все начальные (базовые) таблицы залиты так как надо, для этого я использую SeederTest:
public function completeness()
{
$this->assertDatabaseCount('base_items', base_items::getCount());
}
Где base_items имя сидера (наверное лучше изменить название).
POST тесты я планирую проводить примерно так: (правильно ли я делаю??)
public function SuccessReg()
{
$this->get('/');
$response = $this->post(route('register'), ['login' => 'user', 'password' => '123', 'password_confirmation' => '123']);
$this->assertAuthenticated();
$this->assertDatabaseHas('users', ['login' => 'user']);
$response->assertLocation('/home');
}
/** @test */
public function InvalidLogin()
{
$this->get('/');
$response = $this->post(route('register'), ['login' => '', 'password' => '123', 'password_confirmation' => '123']);
$this->assertGuest();
$this->assertDatabaseMissing('users', ['login' => '']);
$response->assertLocation('/');
}
Но это не так важно, я ведь получаю что хочу. Главный вопрос, нужно ли проводить тестирование GET запросов? То есть элементарные контроллеры, в которых я должен быть уверен что они вернут нужную view с нужным набором данных по нужному адресу и вернут 200. Примерно так:
public function test_home_page()
{
\Auth::login(User::factory()->create());
$response = $this->get('/home');
$response->assertViewIs('auth.home');
$response->assertViewHasAll(['me', 'buildings']);
$response->assertStatus(200);
}
Всё ли и правильно ли я проверяю? Если где-то при передаче данных во view возникнет ошибка (не найдется что-то из бд), будет ли и тут ошибка? Гарантирует такая проверка маршрутов что все страницы откроются корректно? Еще вопрос, есть ли способ залогинить пользователя сразу на весь класс теста чтобы не прописывать каждый раз login? Всё, что я продемонстрировал это ведь вся суть функциональных тестов? Симулировать данные и поведение, проверять правильно ли изменились данные в бд (мне еще не хватает метода для проверки изменились ли данные с конкретного на конкретное).
Надеюсь не слишком много вопросов, это мой первый пост на хабре =)