我正在尝试在集成测试中测试控制器的操作。这是一个简单的场景,我尝试测试的操作是调用服务的方法。我正在尝试使用元类覆盖该方法,但看起来它不起作用,即服务的真实方法总是被调用,而不是我使用元类覆盖的方法。我在这里做错了什么?
这是控制器的方法:
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()
}
PS 我在 STS 2.9.2 中使用 grails 2.0.0