Как я могу протестировать сервис Grails, который использует методы из плагина? - PullRequest
3 голосов
/ 23 февраля 2012

У меня есть служба, которая использует метод sendJMSMessage, предоставляемый плагином jms-grails.Я хочу написать несколько модульных тестов, но я не уверен, как «издеваться» над этим методом, так что он просто ничего не делает.Любые советы?

1 Ответ

2 голосов
/ 23 февраля 2012

Вы можете метаклассировать метод, чтобы он возвращал все, что вы хотите.

@Test
void pluginCode() {
    def myService = new MyService()
    def wasCalled = false
    myService.metaClass.sendJMSMessage = {String message ->
        //I like to have an assert in here to test what's being passed in so I can ensure wiring is correct
        wasCalled = true
        null //this is what the method will now return
    }

    def results = myService.myServiceMethodThatCallsPlugin()

    assert wasCalled
}

Мне нравится иметь флаг wasCalled, когда я возвращаю null из метода metaClassed, потому что мне не особенно нравится утверждать, что ответ null, потому что он не гарантирует, что вы правильно подключен. Если вы возвращаете что-то уникальное, вы можете обойтись без флага wasCalled.

В приведенном выше примере я использовал параметр 1 String, но вы можете metaClass вывести любой номер / тип параметров, чтобы соответствовать тому, что на самом деле происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...