1

我想使用此处描述的技术:Grails bind request parameters to enum 以自动将枚举的字符串表示绑定到域实例。该技术工作正常,但我现有的控制器单元测试失败,因为在单元测试期间未加载自定义编辑器。我不想仅仅为了这种数据绑定技术而为每个控制器切换到集成测试。

当您有自定义属性编辑器时,有没有办法对控制器操作进行单元测试?

4

2 回答 2

1

据我所知,Spring 应用程序上下文在单元测试中不可用,因此您的属性注册商和属性编辑器不会被注册。所以自定义属性编辑器在单元测试中不起作用。但是,grails 使用 GrailsDataBinder - 它是 DataBinder的子类,您可以进行一些元编程和元类的工作,以便在调用 bind() 时注册并找到您的自定义属性编辑器。

于 2012-02-05T07:57:54.527 回答
0

在 Grails 2.x 中,您可以在单元测试中定义额外的 bean,只需将defineBeans其用作设置中的第一件事:

@TestFor(MyController)
class MyControllerTests {

  @Before
  void setup() {
    defineBeans {
      myCustomEditorRegistrar(MyCustomEditorRegistrar)
    }
  }

}
于 2013-03-22T14:00:53.517 回答