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 它失败,因为组织者为空

如果我输入 params['organizer.id'] = 3,那么它在第 (1) 行失败

如果我输入

params.organizer = [:]
params.organizer.id = 3

它不会失败,但数据绑定不起作用。也就是说 event.organizer 在第 (2) 行之后为空

如何使数据绑定在测试方法中起作用?

4

1 回答 1

1

您可以在测试中设置参数如下:

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

即直接使用域对象作为控制器参数

于 2012-10-09T13:26:11.427 回答