我想使用此處描述的技術:Grails bind request parameters to enum 自動將枚舉的字符串表示形式綁定到域實例。 該技術工作正常,但我現有的控制器單元測試失敗,因爲自定義編輯器未在單元測試期間加載。我不願意爲這種數據綁定技術切換到每個控制器的集成測試。如何在使用自定義屬性編輯器時測試Grails控制器?
有沒有辦法來單位當你有一個自定義屬性編輯器時測試一個控制器動作?
我想使用此處描述的技術:Grails bind request parameters to enum 自動將枚舉的字符串表示形式綁定到域實例。 該技術工作正常,但我現有的控制器單元測試失敗,因爲自定義編輯器未在單元測試期間加載。我不願意爲這種數據綁定技術切換到每個控制器的集成測試。如何在使用自定義屬性編輯器時測試Grails控制器?
有沒有辦法來單位當你有一個自定義屬性編輯器時測試一個控制器動作?
在Grails的2.X,你可以在你的單元測試定義額外豆類,只需使用defineBeans
作爲您的安裝的第一件事:
@TestFor(MyController)
class MyControllerTests {
@Before
void setup() {
defineBeans {
myCustomEditorRegistrar(MyCustomEditorRegistrar)
}
}
}
據我所知,spring應用程序上下文不適用於單元測試,因此您的財產註冊商和財產編輯將不會被註冊。所以自定義屬性編輯器不能在單元測試中工作。然而,grails使用GrailsDataBinder - 它是DataBinder的子類。您可能能夠執行一些元編程和metaClass的東西,以便在調用bind()時您的自定義屬性編輯器被註冊並找到。
Grails的2.X ApplicationContext已提供的單元測試通過' GrailsUnitTestMixin'。 –