0

統合テストを作成しようとしていますが、関連付けのバインディングで問題が発生しています。

コントローラーで保存メソッドをテストしようとしています。

私はドメインクラスイベントを持っています

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 であるということです。

テストメソッドでデータバインディングを機能させるには?

4

1 に答える 1

1

次のようにテストでパラメーターを設定できます。

...
controller.params.organizer = Organizer.get(3)
controller.save()
...

つまり、ドメイン オブジェクトをコントローラーのパラメーターとして直接使用します。

于 2012-10-09T13:26:11.427 に答える