我对集成测试restful控制器有一个奇怪的问题...在下面的代码片段中,当我从测试发出post请求时,调用父RestfulController
类的save方法而不是save子类的方法MyController
,因为它们具有不同的签名,最终导致UNPROCESSIBLE_ENTITY
响应。
class MyController extends RestfulController<MyDomain> {
static responseFormats = ['json', 'xml', 'hal']
MyController() {
super(MyDomain)
}
def save(MyCommand command) {
...
}
}
当我运行以下测试时,我的控制器父类save()
的{{1}}动作被执行,从而导致RestfulController
响应,因为我使用的是Command对象,与我的域类不同。
UNPROCESSIBLE_ENTITY
请问我该怎么做才能解决这个问题?
答案 0 :(得分:0)
不支持重载控制器操作。您可以覆盖它们,但不能超载它们。
正在发生的事情是框架在父类中调用no-arg save()
动作,它从不调用你的方法(也不应该)。
您可以重命名save(MyCommand command)
,使其与父类中的操作名称不同,然后提供相应的网址映射,您就可以了。根据你在动作中想要做什么,这可能是也可能不是最好的,但这是你可以采取的一条路径。
我希望这是有道理的。