封装测试方法
Encapsulate test method
是否可以封装一个测试方法来重用它?
我可以将我想要实现的目标描述为
// generic test method
def genericMethod(args){
given:
def request = args.request
when:
def response = http.post(request)
then:
response.data == args.responseData
}
def specificTest1(){
genericMethod([request: 1, responseData: 2])
}
def specificTest2(){
genericMethod([request: 'A', responseData: 'B'])
}
不幸的是,Spock 似乎不是这样工作的。
我知道 expect:
和 where:
标签,但它们不适合我的情况。
是否可以模拟我在上面的代码中指定的内容?
部分成功
仅使用 expect:
时我可以部分成功。
// generic test method
def genericMethod(args){
def request = args.request
def response = http.post(request)
response.data == args.responseData
}
def specificTest1(){
expect:
genericMethod([request: 1, responseData: 2])
}
测试 运行 但 specificTest1()
只测试 genericMethod
是否是 F 的 T。(是的,很明显。:-))
因为这也是作为 issue #724 提出的,我也会 post 在这里回答:
您需要在比较之前明确添加断言。隐式断言仅适用于特殊块,例如 then: 块。
所以 response.data == args.responseData
可以正常工作。
是否可以封装一个测试方法来重用它?
我可以将我想要实现的目标描述为
// generic test method
def genericMethod(args){
given:
def request = args.request
when:
def response = http.post(request)
then:
response.data == args.responseData
}
def specificTest1(){
genericMethod([request: 1, responseData: 2])
}
def specificTest2(){
genericMethod([request: 'A', responseData: 'B'])
}
不幸的是,Spock 似乎不是这样工作的。
我知道 expect:
和 where:
标签,但它们不适合我的情况。
是否可以模拟我在上面的代码中指定的内容?
部分成功
仅使用 expect:
时我可以部分成功。
// generic test method
def genericMethod(args){
def request = args.request
def response = http.post(request)
response.data == args.responseData
}
def specificTest1(){
expect:
genericMethod([request: 1, responseData: 2])
}
测试 运行 但 specificTest1()
只测试 genericMethod
是否是 F 的 T。(是的,很明显。:-))
因为这也是作为 issue #724 提出的,我也会 post 在这里回答:
您需要在比较之前明确添加断言。隐式断言仅适用于特殊块,例如 then: 块。
所以 response.data == args.responseData
可以正常工作。