0
我有一个服务方法,它会依次调用另一个方法,多次。Grails集成测试 - 编写测试以检查服务类中调用函数的次数
DEF了methodA(){
.... 的methodB() ....
}
是否有写一个集成测试,一种方法,其可以测试“methodB()”被调用的次数?
它可以使用单元测试完成,但可以在集成中完成吗?
我有一个服务方法,它会依次调用另一个方法,多次。Grails集成测试 - 编写测试以检查服务类中调用函数的次数
DEF了methodA(){
.... 的methodB() ....
}
是否有写一个集成测试,一种方法,其可以测试“methodB()”被调用的次数?
它可以使用单元测试完成,但可以在集成中完成吗?
这是一个常规的JUnit 3测试,但这种方法在Spock测试中可以正常工作。
您可以使用&.
运算符来获取对方法的引用并通过引用调用方法,所以我会这样做,然后用一个闭包来替换元类中的方法,闭包会递增计数器,然后调用实数方法使用保存的参考。
class FooServiceTests extends GroovyTestCase {
def fooService
void testCountMethodB() {
def methodB = fooService.&methodB
int count = 0
fooService.metaClass.methodB = { ->
count++
methodB()
}
fooService.methodA()
assert count == 5 // or whatever number you expect
}
}
如果methodB
有争论,一定要与相同的签名,例如注册一个封闭
fooService.metaClass.methodB = { int bar, String wahoo ->
count++
methodB(bar, wahoo)
}
你使用spock? – jripoll 2014-09-25 14:12:14
是的。我正在使用spock – ashipj 2014-09-25 17:37:17