封装测试方法

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 可以正常工作。