我試圖在集成測試中測試控制器的操作。這是一個簡單的場景,我嘗試測試的操作是調用服務的方法。我試圖用metaclass覆蓋該方法,但它看起來不起作用,即服務的實際方法總是被調用,而不是使用metaclass重寫的方法。我在這裏做錯了什麼?在Grails集成測試中重寫服務方法
這裏是控制器的方法:
class MyController {
MyService myService
def methodA() {
def u = myService.find(params.paramA)
render view: "profile", model: [viewed: u]
}
這是我如何實現集成測試:
class MyControllerTests extends GroovyTestCase {
MyController controller
void testMethodA() {
controller = new MyController()
// Mock the service
MyService mockService = new MyService()
mockService.getMetaClass().find = { String s ->
[]
}
controller = new MyController()
controller.myService = myService
controller.methodA()
}
附:我使用的Grails 2.0.0在STS 2.9.2
topr,非常感謝!我最終使用了你建議的強制技術,並且一切正常。 – Tomato
是不是集成測試的問題?它看起來像代碼是單元測試。 –