laravel - 从带有端点的数组生成 PHPUnit 测试

标签 laravel unit-testing testing phpunit behat

对于一个应用程序,我们使用其中确定了大量端点特征(关系、可填充、可见、角色等)的配置文件。我们希望循环遍历这些文件并使用 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}”方法,这样它们就会像单独的测试一样被处理?

除了这些测试,我们还进行单元测试和端到端测试,所以我们充分意识到这种测试方式的缺点。

最佳答案

在进一步研究 PHPUnit 之后,我在 dataProviders 中找到了答案:

https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.data-providers

通过这种方式,您可以为方法指定一个数据提供者,该方法应返回一个数组,其中包含您要迭代的所有情况。

关于laravel - 从带有端点的数组生成 PHPUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40933877/

相关文章:

php - Laravel 重定向数据不起作用

testing - 仅使用接口(interface)进行测试可以吗?

c# - 使用 rhino mocks 为每次调用返回不同的实例

javascript - Node CLI 单元测试

perl - 如何并行运行 Test::Perl::Critic?

c# - 手动测试应用程序

javascript - VueJS react 性在 Blade 部分内不起作用

php - PHP/Laravel 中带有变量的准备好的语句 - 在其他无缓冲查询处于事件状态时无法执行查询

php - 让 array_sum 在 Laravel PHP 的每个 foreach 循环中添加总计。

unit-testing - Grails单元测试失败