Grails集成测试 - 编写测试以检查在服务类中调用函数的次数

时间:2014-09-25 12:28:03

标签: grails

我有一个服务方法,它可以多次调用另一个方法。

  

def methodA(){

     

....     的methodB()     ....

     

}

有没有办法编写集成测试,可以测试" methodB()"被称为?

可以使用单元测试完成,但是可以在集成中完成吗?

1 个答案:

答案 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)
}