Я просто хотел знать, какой лучший метод для тестирования FormRequests и Controllers - в частности, как можно проверить логику проверки.
В качестве примера у меня есть класс запроса формы (PersonRequest), настроенный следующим образом:
public function rules()
{
return [
'name' => 'required',
'address' => 'required',
'email' => 'email|required',
'website' => 'nullable|url'
];
}
И затем в моем контроллере я написал тесты для:
public function it_can_store_a_person();
public function it_cannot_store_a_person_without_a_name();
public function it_cannot_store_a_person_without_an_address();
public function it_cannot_store_a_person_without_an_email();
public function it_cannot_store_a_person_with_an_invalid_email();
public function it_cannot_store_a_person_with_an_invalid_website();
Тогда у меня были бы те же функции, но для "обновления", но это, похоже, повторение тестовых функций "сохранения".
Все это работает, но кажется излишним и может привести к большому количеству тестов, если бы критериев было больше.
Могу ли я написать отдельный тест для проверки правил проверки (пример приведен в Модульный тест FormRequest Laravel) и игнорировать их в контроллере и поэтому просто проверить правильное сохранение и недопустимое сохранение. то есть
public function it_can_save_a_person();
public function it_cannot_save_a_person_if_an_error_occurs();
Я также читал, что FormRequests тестируются внутри, и поэтому мне нужно будет проверить их снова.
Любые советы, рекомендации по передовому опыту будут с благодарностью получены.
Учитывая это, я немного подумал, и мне интересно, является ли тестирование всех проверок более функциональным, чем модульное тестирование. Мы знаем, что Laravel будет правильно генерировать ошибки (это было протестировано внутри), поэтому мы должны быть в порядке, просто проверяя, что одно правило (любое правило) возникает и отображается, что должно выполняться через контроллер. Я думаю, что тестирование всех правил — это скорее тестирование функций, когда вы хотите протестировать комбинации, чтобы убедиться, что они проходят или не проходят, и отображают правильное сообщение. Не уверен, что этот последний шаг действительно необходим, но я часто меняю текст сообщения об ошибке по умолчанию, поэтому было бы полезно знать, что этот текст используется.





Мне тоже интересно узнать больше. Недавно я задумался, и мне было интересно, действительно ли нам нужно тестировать логику проверки. Я имею в виду, что Laravel уже делает это. Это не должно быть нашей ответственностью, верно? Возможно, мы можем проверить, получают ли наши поля соответствующие правила проверки.