統合テストを作成しようとしていますが、関連付けのバインディングで問題が発生しています。
コントローラーで保存メソッドをテストしようとしています。
私はドメインクラスイベントを持っています
class Event {
...
..
.
Organizer organizer
}
私が持っているコントローラの保存方法で
def save() {
...
..
.
def passedOrganizerId = params.organizer.id // (1)
//Some comprobations
// if comprobations pass
def event = new Event(params) // (2)
.
}
メソッドはうまく機能しているようですが、統合テストを作成したいと考えています。
class EventControllerTests extends GroovyTestCase {
void testSave() {
def params = [:]
// Params setup (3)
controller.params.putAll(params)
controller.save()
...
..
.
}
}
パラメータのセットアップを行う方法をいくつか試しましたが、すべて失敗します。
テストメソッドの行 (3) に次のように入力した場合:params.organizer.id = 3
オーガナイザーが null であるため失敗します
入力する params['organizer.id'] = 3
と、行で失敗します (1)
入れば
params.organizer = [:]
params.organizer.id = 3
失敗はしませんが、データバインディングは機能していません。行 (2) の後に event.organizer が null であるということです。
テストメソッドでデータバインディングを機能させるには?