2017-01-31 3 views
0

私はgrails 2.5.4とspockフレームワークを使用しています。私はgrails proyectに次のサービスを提供していますspockフレームワークを使用したgrailsサービスメソッドの相互作用のテスト方法

class MyService { 

    void method1(Param param) { 
     if (param == null) { 
      return 
     } 
     method2(param) 
     method3(param) 
    } 

    void method2(Param param) { 
     println param 
    } 

    void method3(Param param) { 
     println param 
    } 
} 

すべてのメソッドには戻り値の型がありません。 nullでないparamの場合、すべてのメソッドが呼び出されることを確認したい。

私のテストでは、この

@TestFor(PaymentService) 
class MyServiceSpec extends Specification { 
    void testMethods() { 
     when: 
     service.method1(new Param()) 

     then: 
     1 * service.method2(*_) 
     1 * service.method3(*_) 
    } 
} 

のようなものですが、それは常に法2と法3 0の相互作用を示します。私は彼らが(私はデバッガを使用して)呼び出されて知っている。メインサービスのサービスをモックできますが、メインサービスのインタラクションをテストする方法や、呼び出されたかどうかをテストするためのサービスの特定のメソッドを擬似する方法はわかりません。

私はあなたがこのような何か使用してスパイでそれをテストすることができ.....

答えて

0

私はそれをよく説明している場合わからない:

class MyServiceSpec extends Specification { 
    void 'test methods'() { 
     given: 
     def myService = Spy(MyService) 

     when: 
     myService.method1(new Param()) 

     then: 
     1 * myService.method2(_ as Param) 
     1 * myService.method3(_ as Param) 
    } 

} 

を(あなたがのために@TestForを必要としないことに注意してくださいそのようなテスト)

+0

私はその注釈が何をしているのか分かりません。明日私はあなたのソリューションをテストし、あなたの答えを受け入れる:) –

+0

それは素晴らしい仕事を!!!ありがとう..私は私のコードのデザインについて新しい質問をする:D –

関連する問題