【问题标题】:Generating PHPUnit tests from array with endpoints从带有端点的数组生成 PHPUnit 测试
【发布时间】:2017-04-17 11:06:21
【问题描述】:

对于应用程序,我们使用配置文件,其中确定了大量端点特征(关系、可填充、可见、角色等)。我们希望循环通过这些文件并使用 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 测试,因此我们充分意识到这种测试方式的缺点。

【问题讨论】:

    标签: laravel unit-testing testing phpunit behat


    【解决方案1】:

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

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

    这样你可以为一个方法指定一个数据提供者,它应该返回一个包含你想要迭代的所有案例的数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 2012-09-14
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 2017-01-11
      相关资源
      最近更新 更多