Grailsサービスクラスに対してunit testsと書いています。サービスクラスは、複数のドメインクラスを使用します。ドメインクラスのモックを作成するには、mockDomain
メソッドを使用してチャームのように動作します。ドメインオブジェクトを正しく保存できるかどうかをテストするコードパス(ドメイン検証)も簡単に記述できます。しかし、私のコードでは、例外オブジェクトを扱うブロックtry/catch
でドメインオブジェクト操作をラップしました。ドメイン操作が例外をスローすることをシミュレートする方法はありますか? Mockito(thenThrow
)やEasyMock(andThrow
)のようなMockフレームワークで簡単に行うことができますが、主にGrailsのネイティブな方法を探しています。私は、Grailsのテストフレームワークを補完するフレームワークを公開しています。模擬ドメインクラスの例外をスローするシミュレーション
0
A
答えて
1
これはGroovyのメタクラスを使って簡単です。この例では、あなたのドメインクラスの1つがFooだと言います。
void testFooThrowsException(){
def fooInstance = new Foo()
fooInstance.metaClass.methodToTest = {arg1, arg2->
throw new CustomException("I'm an exception")
}
shouldFail CustomException, {fooInstance.methodToTest("val1", "val2")}
}
インスタンスのメタクラスを変更すると、インスタンスのライフサイクル全体が変更されます。 Read more on metaclassing on the Groovy site.これはGroovy、IMOの最もクールな部分の1つです。
関連する問題
- 1. 例外をスローするのではなく何かを返すメソッドを模擬する方法(PowerMock?)
- 2. =例外をスローする例外
- 3. openFileOutput例外をスローする
- 4. コンテンツプロバイダ例外をスローする
- 5. カスタム例外をスローする
- 6. プリンターの模擬
- 7. ライブラリのスロー例外
- 8. Androidのスロー例外
- 9. Windowsインストーラを模擬する
- 10. 例外と例外のスロー。<T>?
- 11. @scheduled cron式の例外スロー例外
- 12. 模擬問題
- 13. 模擬OLAP
- 14. Yii模擬モデル
- 15. ジャスミン模擬ウィンドウオブジェクト
- 16. 模擬オブジェクトコンストラクタのテスト
- 17. SMSゲートウェイの模擬?
- 18. Bytebuddyインターセプト例外スロー
- 19. C++/C#例外スロー
- 20. コンストラクタとスロー例外
- 21. 例外をスローするTestRunTypeのシリアライズ
- 22. 2つの例外をスローする
- 23. 別のスレッドに例外をスローする
- 24. プリミティブベクトルの削除例外をスローする
- 25. 例外のスローまたは再スロー?
- 26. 例外をチェックした後にプログラムが例外をスローする
- 27. SPLオートローダの例外のスロー?
- 28. アプリケーションが例外をスロー
- 29. Tkinter.StringVar()が例外をスローし
- 30. データバインディングとセッタのスロー例外