2012-02-23 5 views

答えて

2

メソッドをメタクラスして、必要なものを返すようにすることができます。

それは本当にあなたがアップ有線していることを保証するものではありませんので、私は特に応答が nullであることを主張し好きではないので、私は、私はmetaClassedメソッドから nullを返すてるとき wasCalled旗を持ちたい
@Test 
void pluginCode() { 
    def myService = new MyService() 
    def wasCalled = false 
    myService.metaClass.sendJMSMessage = {String message -> 
     //I like to have an assert in here to test what's being passed in so I can ensure wiring is correct 
     wasCalled = true 
     null //this is what the method will now return 
    } 

    def results = myService.myServiceMethodThatCallsPlugin() 

    assert wasCalled 
} 

正しくwasCalledフラグがなければ、あなたは何かユニークなものを返すでしょう。

上記の例では、1つの文字列パラメータを使用しましたが、実際に何が起こるかに応じて任意の数/タイプのパラメータをmetaClassから取得できます。

+0

こんにちはJarred、残念ながら、このメソッドはサービスではありません。それはプラグインによって私のサービスで「公開された」ものです。私はプラグインの作成を試みたことがないので、どのように動作するかは完全にはわかりませんが、単にこのメソッドを「どこからでも」呼び出すことができます。 – Krystian

+0

それからそれらはおそらくすべてのサービス(可能なコントローラとドメインオブジェクト)にメタクラス化しています。あなたはそれをあなたのサービスに単にメタクラスすることができます。私は私の答えを更新します。 –

関連する問題