带有因变量的 Spock "where"

Spock "where" with dependent variables

我正在尝试在 Spock 中进行一些数据驱动测试。

我有 1 个变量依赖于另一个变量:即

Services = ["tf1", "fr2"]
Questions(service) = ["What is on {service} ?", "Switch to {service}"]

我希望我的测试检查服务和问题(服务)的所有可能组合:总共 4 个测试。

我试过写一个 where: 这样的子句 :

    where:
      service << SERVICES
      question << Questions(service)

但是在运行时失败了 groovy.lang.MissingPropertyException: No such property: service for class: com.my.testclass

有人找到解决这个问题的办法了吗?

你想要的是不可能的,所有变量必须具有相同的基数。对于每个 service 条目,必须恰好有一个对应的 question。 您在评论中写的是正确的方法,您可以将其提取到辅助方法中 where: [service, question] << serviceQuestionsCombinations()