Grails中集成测试中一对多关联数据绑定的问题

时间:2012-10-09 12:34:41

标签: grails data-binding integration-testing

我正在尝试创建集成测试,我正在运行一个关联绑定的问题。

我正在尝试在控制器中测试保存方法。

我有域类事件

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()
        ...
        ..
        .
    }

}

我已经尝试了几种方法来设置params,但都失败了。

如果在测试方法行(3)中输入:params.organizer.id = 3,则因组织者为空而失败

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

如果我输入

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

它没有失败,但数据绑定不起作用。这就是说第(2)行之后event.organizer为null

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

1 个答案:

答案 0 :(得分:1)

您可以在测试中设置params,如下所示:

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

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