我想使用此处描述的技术:Grails bind request parameters to enum 以自动将枚举的字符串表示绑定到域实例。该技术工作正常,但我现有的控制器单元测试失败,因为在单元测试期间未加载自定义编辑器。我不想仅仅为了这种数据绑定技术而为每个控制器切换到集成测试。
当您有自定义属性编辑器时,有没有办法对控制器操作进行单元测试?
我想使用此处描述的技术:Grails bind request parameters to enum 以自动将枚举的字符串表示绑定到域实例。该技术工作正常,但我现有的控制器单元测试失败,因为在单元测试期间未加载自定义编辑器。我不想仅仅为了这种数据绑定技术而为每个控制器切换到集成测试。
当您有自定义属性编辑器时,有没有办法对控制器操作进行单元测试?
据我所知,Spring 应用程序上下文在单元测试中不可用,因此您的属性注册商和属性编辑器不会被注册。所以自定义属性编辑器在单元测试中不起作用。但是,grails 使用 GrailsDataBinder - 它是 DataBinder的子类,您可以进行一些元编程和元类的工作,以便在调用 bind() 时注册并找到您的自定义属性编辑器。
在 Grails 2.x 中,您可以在单元测试中定义额外的 bean,只需将defineBeans
其用作设置中的第一件事:
@TestFor(MyController)
class MyControllerTests {
@Before
void setup() {
defineBeans {
myCustomEditorRegistrar(MyCustomEditorRegistrar)
}
}
}