我有一个服务方法,它将params作为输入,并创建一个传递params以进行自动绑定的域类。通过将params指定为键值对的映射,可以很容易地对此进行测试。但是,我不知道如何在参数映射中模拟关联对象的数组。
我观察到客户端以下列格式发送参数:
["description":"abc", "subTask[0].name": "first subtask name"]
我如何模仿这种类型的参数?由于这不是控制器测试,我不能使用mockParams AFAIK。
答案 0 :(得分:1)
答案结果是这样的: 由于控制器参数映射解析在Service类中不可用,因此您必须自己转换值和对象。所以在我的例子中,我必须在params映射中手动创建一个关联对象的数组。这是一个例子:
def params = [ state: "Open", type: "Cable",
needByDate: new Date("Fri May 11 00:00:00 PDT 2012"),
//"subTasks[0]":["name":"ABC"] //no workie
"subTasks": [new Task("name": "ABC")]
]
mockDomain(Task.class)
Task task= service.saveNewRequest(params)
希望这有助于某人。
答案 1 :(得分:0)
Grails中的params地图使用包含点的参数名称来制作神奇的东西,使它们在控制器中可用作“子地图”。例如,如果您有参数a.b = 1和a.c = 2,则可以请求params.a
并获取地图[b:1, c:2]
。所以尝试这样的事情:
["description":"abc", "subTask[0]":["name": "first subtask name"]]