Spock:如何在数据管道中输入字符串值
Spock: How to input string values in a data pipe
我在谷歌上搜索了很多,但没有找到一个在数据管道中使用字符串值填充输入数据的示例。
有人可以举例说明如何做吗?
我用过:
[a,b,c] << ["aaa","bbb","ccc"]
但是出现错误。
简单地为多个变量分配多个值是这样完成的:
def (a, b, c) = ["aaa", "bbb", "ccc"]
但是像这样的 Spock 输入数据更像这样:
where:
a << [3, 7, 0]
b << [5, 0, 0]
c << [5, 7, 0]
http://spockframework.org/spock/docs/1.0/data_driven_testing.html
假设您要 运行 测试 3 次,第一次 "aaa" 分配相同的变量,第二次 "bbb",第二次分配 "bbb","ccc" 对于第三个,你会这样做:
where:
variableName << ["aaa","bbb","ccc"]
这是我的一个项目的完整示例:
class PhoneNumberConverterSpec extends Specification {
private PhoneNumberConverter phoneNumberConverter = PhoneNumberConverter.instance
@Unroll('convert invalid phone number #input')
def 'attempt to convert invalid phone numbers to canonical format'() {
expect:
!phoneNumberConverter.canConvert(input)
where:
input << [null, 6, '353', '9999999']
}
}
如果另一方面,您只想 运行 测试一次并将值分配给 3 个不同的变量,那么使用数据管道真的没有意义,只需像在常规 Groovy 代码。
我在谷歌上搜索了很多,但没有找到一个在数据管道中使用字符串值填充输入数据的示例。
有人可以举例说明如何做吗?
我用过:
[a,b,c] << ["aaa","bbb","ccc"]
但是出现错误。
简单地为多个变量分配多个值是这样完成的:
def (a, b, c) = ["aaa", "bbb", "ccc"]
但是像这样的 Spock 输入数据更像这样:
where:
a << [3, 7, 0]
b << [5, 0, 0]
c << [5, 7, 0]
http://spockframework.org/spock/docs/1.0/data_driven_testing.html
假设您要 运行 测试 3 次,第一次 "aaa" 分配相同的变量,第二次 "bbb",第二次分配 "bbb","ccc" 对于第三个,你会这样做:
where:
variableName << ["aaa","bbb","ccc"]
这是我的一个项目的完整示例:
class PhoneNumberConverterSpec extends Specification {
private PhoneNumberConverter phoneNumberConverter = PhoneNumberConverter.instance
@Unroll('convert invalid phone number #input')
def 'attempt to convert invalid phone numbers to canonical format'() {
expect:
!phoneNumberConverter.canConvert(input)
where:
input << [null, 6, '353', '9999999']
}
}
如果另一方面,您只想 运行 测试一次并将值分配给 3 个不同的变量,那么使用数据管道真的没有意义,只需像在常规 Groovy 代码。