Я пытаюсь проверить действие контроллера в тесте интеграции. Это простой сценарий, когда действие, которое я пытаюсь проверить, вызывает метод службы. Я пытаюсь переопределить этот метод с помощью метакласса, но похоже, что он не работает, т. Е. Реальный метод службы всегда получает вызов вместо того, который я переопределяю с помощью метакласса. Что я здесь делаю неправильно?Метод переопределения службы в тесте интеграции граблей
Вот метод контроллера:
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()
}
P.S. Я использую Grails 2.0.0 в STS 2.9.2
topr, спасибо большое! Я закончил использовать технику принуждения, которую вы предложили, и все работает отлично. – Tomato
Не вопрос для тестирования интеграции? Похоже, что код предназначен для модульного теста. –