私はいくつかのバリデーションを持つ2つの他のドメインクラスに属するドメインクラスを持っています。Grailsでテストする際に検証を無視してドメインオブジェクトを模擬する方法は?
ドメインクラスの書籍は著者に属します。 Bookドメインクラスをテストするとき、作成者のすべての複雑な検証を使用してAuthorオブジェクトにアクセスするだけで、Authorオブジェクトにアクセスできます。これは可能ですか?
私はいくつかのバリデーションを持つ2つの他のドメインクラスに属するドメインクラスを持っています。Grailsでテストする際に検証を無視してドメインオブジェクトを模擬する方法は?
ドメインクラスの書籍は著者に属します。 Bookドメインクラスをテストするとき、作成者のすべての複雑な検証を使用してAuthorオブジェクトにアクセスするだけで、Authorオブジェクトにアクセスできます。これは可能ですか?
Author
のインスタンスを保存するときは、単にvalidate: false
を渡します。
Author authorInstance = new Author()
authorInstance.save(validate: false)
これにより、Grailsレベルでの検証はできなくなりますが、データベースレベルでの書き込み時の動作は不明です。
build-test-data pluginは、この問題の最適な解決策です。気にするプロパティの値のみを指定してドメインオブジェクトを作成/保存することができます。プラグインは、他の必要なプロパティ/オブジェクトの値を入力します。この本は、著者、タイトル、ISBNが必要ですが、あなたのテストは、本のタイトルについてのみ、懸念している場合たとえば、あなたは、単にプラグインはISBNや著者の有効な値を作成し、保存の世話をします
def book = Book.build(title: 'Great Expectations')
を書くことができますすべてをデータベースに保存します。
データベースレイヤーで制約違反が発生した場合、例外がスローされます –
これが機能するかどうかわかりません。 – bhushan154
build-test-dataプラグインは、おそらく私がDonalの答えを受けた後のものです。 – bhushan154