domainInstance.validate()の返品値をock笑する
-
12-10-2019 - |
質問
私は書いています スポック コントローラー法をテストするユニットテスト。
テスト下のコントローラーアクションは、新しいドメインインスタンスオブジェクトをインスタンス化し、保存する前に検証を呼び出します。とにかくDomainInstance.validate()への呼び出しをあざけります。または、これを達成するために、このインスタンス化とサービス方法の背後に保存する必要がありますか?
これを行います。なぜなら、コントローラーの単体テストのコンテキスト内で、ドメインオブジェクトの制約は関与しないでください。私はそれらを他の場所でテストします(明らかにmydomainclasStestsで)。それらを考慮に入れたい場合、私のテストは統合テストになります。
解決 2
しばらくして、私は私が望んでいたことはかなりトリッキーだという結論に達しました。あなたがそうしないシナリオにいる場合 持ってる 使用する mockDomain()
, 、Groovy Metaclassメソッドを追加することができ、実装です(TrueまたはFalseを返し、どちらの場合でも)
もし、あんたが 行う mockdomain()が必要なので、既存のインスタンスをモックする必要があるため、少なくとも今のところはモックドメイン()とモックドメインが実際に提供するメタクラスメソッドをいじるためではありません。
他のヒント
Domain Instance自体に検証を配置しなかった場合、サービスでは、コントローラーにコンストラクター(またはむしろサービスのインターフェイス)でサービスを受けることができます。そのサービスが検証を処理させます。
そのコントローラーの適合性のために、そのインターフェイス(サービス)の模擬をコントローラーに渡し、モックを構成して、必要なものを返すようになります。
.netにはmoqをお勧めします(http://code.google.com/p/moq/)