我有一个服务方法,它可以多次调用另一个方法。
def methodA(){
.... 的methodB() ....
}
有没有办法编写集成测试,可以测试" methodB()"被称为?
可以使用单元测试完成,但是可以在集成中完成吗?
答案 0 :(得分:0)
这是一个常规的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)
}