Grails - 使用JSON请求进行单元测试不起作用

Psy*_*nch 2 testing grails json

我有以下控制器代码:

@Transactional
def save(MyModel model) {
    model.save()
}
Run Code Online (Sandbox Code Playgroud)

我正在测试它使用:

request.json = new MyModel(property1: 1, property2: 2)
controller.save()
Run Code Online (Sandbox Code Playgroud)

但是,每次运行测试时,我都会得到NullPointerException,因为它model是null.我是否需要放置任何其他代码才能使绑定正常工作?

dma*_*tro 7

request.json如果在控制器单元规范/测试中适当地模拟域对象,则将域对象设置为应该有效.

相反,您也可以request.json在测试中设置一个JSON字符串,然后MyModel在调用控制器操作时绑定该字符串.所以你的测试应该是这样的:

request.json = '{"property1": 1, "property2": 2}'
Run Code Online (Sandbox Code Playgroud)

另请注意,因为您id在请求有效负载中没有,这表示您正在尝试POST新记录.在这种情况下,只有POST在请求中明确设置了http方法时,与域对象的数据绑定才有效.

request.method = 'POST'
Run Code Online (Sandbox Code Playgroud)