在Spock中嘲弄一个超类

时间:2014-06-30 01:45:27

标签: unit-testing grails mocking spock

如何对Spock中具有超类的类进行单元测试,从而调用超类的方法调用?或者你如何模拟Spock中的超类?

前:

class Bar {

  def method1(parm1){
      //Method actions
  }
}


class Foo extends Bar {

   def method2(param1, param2) {          
       //Method actions
       super.method1(param1)
   }
}

如何模拟班级Bar的行为?

2 个答案:

答案 0 :(得分:2)

您可以将班级Foo用作Spy。间谍将创建类Foo的实例,但是您可以模拟在间谍类层次结构中声明的任何公共方法。

def fooInstance = Spy(Foo)
fooInstance.method1(_) >> 'return value'

答案 1 :(得分:0)

以下代码将帮助您指定实际调用的方法。

setup:
def fooInstance = Spy(Foo)

when: "this try-catch block is debug code"
try {
  // do something with Foo or Bar
}
catch (Exception e) {
}

then:
0 * fooInstance._

此网站可能有用。 - > Spock Mock Cheatsheet