unit-testing - 重申一下 Spock 的阻塞在哪里?

标签 unit-testing testing groovy spock

我们正在使用 Spock 来放心地进行 API 测试。我们遇到过这样的情况:我们正在从 CSV 文件中读取数据。因此,对于本例,我们假设我们正在读取 10 行数据。对于给定数量的“公司”,我们是否可以对这 10 行数据重复这个单一测试?例如:

@Unroll
def "example test"() {
    when:
    //do something here

    then:
    //check something here

    where:
    row << functionalUtils.getRecordsFromCsv(csvFile)
}

无论 CSV 文件中有多少行,这都会运行测试,因此如果 CSV 文件中有 10 行,它将运行 10 次。

但是假设我们支持 4 家公司,它们都具有相同的数据,并且我们想要验证所有 4 家公司都是正确的。我们不想让 CSV 文件包含 40 行(重复相同的 10 行 4 次),而是希望对 4 家公司重复此测试 4 次。类似的东西

@Unroll
def "example test"() {
    when:
    //do something here

    then:
    //check something here

    where:
    company << ["company a","company b","company c","company d"]
    row << functionalUtils.getRecordsFromCsv(csvFile)
}

我是否让事情变得更加困难了?这可能吗?我知道这是不正确的并且会出错,我只是想演示我正在尝试做的事情。

最佳答案

如果所有公司的csv文件中的数据都相同,则可以使用Groovy的combinations()multi variable data pipes 一起在斯波克。

where:
[row, company] << [
    functionalUtils.getRecordsFromCsv(csvFile),
    ["company a","company b","company c","company d"]
].combinations()

关于unit-testing - 重申一下 Spock 的阻塞在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66485337/

相关文章:

android - Robolectric:Resources$NotFoundException:带有 Android Gradle 插件 3 的字符串资源 ID

javascript - 使用 Jest、AudioContext 进行测试和模拟

Groovy:如何为全局范围的字段分配动态值

groovy - 是否可以替换现有对象的常规方法?

node.js - 如何测试 Connect/Express 中间件?

unit-testing - 模拟文档上的 keydown 以进行 JEST 单元测试

android - 使用 mockito MVVM 模式在 android 中对 View 模型进行单元测试

python - 从 Nose2 插件跳过单元测试

Laravel Dusk 忽略 .env.dusk 和 .env.dusk.local(使用 Valet 和 Laravel 5.5)

groovy - 任务的 gradle 配置