Генерация тестов 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

Таким образом, вы можете указать поставщика данных для метода, который должен возвращать массив со всеми случаями, для которых вы хотите выполнить итерацию.

Другие вопросы по тегам