Генерация тестов PHPUnit из массива с конечными точками
Для приложения мы используем файлы конфигурации, в которых определяется большое количество характеристик конечной точки (отношения, заполняемые, видимые, роли и т. Д.). Мы хотели бы пройтись по этим файлам и провести автоматические тесты с PHPUnit, просто чтобы увидеть, получаем ли мы ответ, если вызываются ошибки проверки, если ответ соответствует файлам и т. д.
Мы загружаем конфигурацию и выполняем тесты для каждой конфигурации конечной точки:
public function testConfigurationFiles()
{
$config = resolve('App\Contracts\ConfigInterface');
foreach ($config->resources as $resource=>$configuration) {
foreach ($configuration->endpoints() as $method=>$rules) {
$this->endpoint($method, $resource, $configuration);
}
}
}
После чего мы используем переключатель, чтобы по-разному тестировать каждый тип метода (индексировать, показывать, создавать, обновлять, удалять). В общей сложности это сводится к десяткам тестов с сотнями утверждений.
Однако, если хотя бы одна из этих конечных точек дает сбой, все тесты завершаются неудачно, не показывая явной информации о том, что пошло не так. Есть ли способ автоматически сгенерировать метод "test{$resource}{$method}" для каждой конечной точки, чтобы они обрабатывались как отдельные тесты?
Помимо этих тестов мы также проводим модульные тесты и тесты e2e, поэтому мы полностью осознаем недостатки этого способа тестирования.
1 ответ
Изучив PHPUnit еще немного, я нашел свой ответ в dataProviders:
https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html
Таким образом, вы можете указать поставщика данных для метода, который должен возвращать массив со всеми случаями, для которых вы хотите выполнить итерацию.