私はWebアプリケーションのためのセレン援助を書いています。そしてその機能の1つとして、私はgrailsサービスの応答を取りやめています。後でサービスを「元に戻す」ようにメソッドを永続化する方法はありますか?私のテスト・アシスト・コードは実動コードから完全に切り離すことができ、実際のサービス・レイヤーにテスト・エイドが漏れないという考えがあります。メソッドを後で保存して一定期間スタブするにはどうすればよいですか?
これはサービスを「オフ」にしても問題ありませんが、これを元に戻すことは問題です。
は、私はこれをやっている:
myService.metaClass.method1 = {true}
myService.metaClass.method2 = {false}
私はちょうどmyService.metaClass.method1
を保存するが、後でそれを設定しようと試みたが、単にメソッドスタブを残します。
後でmethod1
とmethod2
を保存するにはどうすればよいですか?
MyService.metaClass.method1 = oldMethod1はmethod1の呼び出しを変更していないようです。すべき? –
私はExpandoMetaClassがどのようにMetaMethodで動作するのかよく知られていませんが、これはうまくいくはずです: 'MyService.metaClass.method1 = { - > oldMethod1.invoke(delegate)}' –
うん、それは間違いなく動作します。 –