我正在尝试创建集成测试,我正在运行一个关联绑定的问题。
我正在尝试在控制器中测试保存方法。
我有域类事件
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
如何使数据绑定在测试方法中起作用?
答案 0 :(得分:1)
您可以在测试中设置params,如下所示:
...
controller.params.organizer = Organizer.get(3)
controller.save()
...
即。直接使用域对象作为控制器参数