Grails Controller集成测试执行父,RestfulController类

时间:2018-04-22 12:56:36

标签: grails integration-testing grails-rest-api

我对集成测试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

请问我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

不支持重载控制器操作。您可以覆盖它们,但不能超载它们。

正在发生的事情是框架在父类中调用no-arg save()动作,它从不调用你的方法(也不应该)。

您可以重命名save(MyCommand command),使其与父类中的操作名称不同,然后提供相应的网址映射,您就可以了。根据你在动作中想要做什么,这可能是也可能不是最好的,但这是你可以采取的一条路径。

我希望这是有道理的。