Grails—单元测试控制器,用于';他正在使用一个命名的封送员

Grails—单元测试控制器,用于';他正在使用一个命名的封送员,grails,grails-2.0,spock,Grails,Grails 2.0,Spock,我正在尝试对使用命名封送器的控制器进行单元测试。控制器如下所示: def userByEmail(UserByEmailCommand userByEmailCommand) { render checkForErrorsAndExecute(userByEmailCommand) { UserByEmailCommand cmd -> JSON.use("complete") { [users: [userService.getUserBy

我正在尝试对使用命名封送器的控制器进行单元测试。控制器如下所示:

def userByEmail(UserByEmailCommand userByEmailCommand) {
    render checkForErrorsAndExecute(userByEmailCommand) { UserByEmailCommand cmd ->
        JSON.use("complete") {
            [users: [userService.getUserByPrimaryEmailAddress(cmd.email)]] as JSON
        }
    }
}
当我运行测试时,我得到一个异常,它说没有找到名为“complete”的转换器配置


在此方面的任何帮助都将不胜感激。谢谢。

您可以在测试本身中创建命名配置。例如:

given: 'register marshaller'
JSON.createNamedConfig('complete') { 
    it.registerObjectMarshaller(Map) { Map item -> item }
}

when: 'controller action is called'
controller.userByEmail()

then:
// assertion goes here

有没有一种解决方案不需要在引导和测试文件中保存命名的封送器代码两次?谢谢