封装测试方法

时间:2017-04-27 13:45:21

标签: spock

是否可以封装测试方法以重用它?

我可以描述我想要实现的目标

// 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(是的,很明显。:-))

1 个答案:

答案 0 :(得分:1)

由于这也是issue #724,我也会在这里发布答案:

您需要在比较之前显式添加断言。隐式断言仅应用于特殊块,例如then:block。

所以response.data == args.responseData会让它发挥作用。