2014-09-25 87 views
0

我有一个服务方法,它会依次调用另一个方法,多次。Grails集成测试 - 编写测试以检查服务类中调用函数的次数

DEF了methodA(){

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

}

是否有写一个集成测试,一种方法,其可以测试“methodB()”被调用的次数?

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

+0

你使用spock? – jripoll 2014-09-25 14:12:14

+0

是的。我正在使用spock – ashipj 2014-09-25 17:37:17

回答

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