Grails mockFor и как лучше всего протестировать метод с правильными аргументами - PullRequest
5 голосов
/ 06 марта 2011

Я хочу проверить, что контроллер вызывает сервисный метод с правильными аргументами. Каков наилучший способ сделать это?

Мой текущий план состоит в том, чтобы использовать mockFor и затем проверять закрытие передаваемого значения. Есть ли лучший способ выполнить тест через mockFor или mocked объект, подобный тому, что я могу сделать с mockito для выполнения этого же вызова метода проверка значения аргумента?

class HappyControllerTests extends ControllerUnitTestCase {
       :
    void testSomeValue() {
        def mockControl = mockFor(HappyService)
        def givenSomeItem = null
        mockControl.demand.serviceMethod(1..99) { String someItem -> givenSomeItem = someItem; }
        controller.happyService = mockControl.createMock() 

        controller.someAction()

        mockControl.verify()
        assertEquals("specific value", givenSomeItem)
    }
}

Спасибо!

1 Ответ

13 голосов
/ 06 марта 2011

Я редко использую mockFor, так как нахожу встроенный в Groovy материал метакласса, а as ClassName, чтобы с ним было легче работать, и он более мощный, я бы сделал это:

void testSomeValue() {
    def givenSomeItem = null
    controller.happyService = [
        serviceMethod: { String someItem -> givenSomeItem = someItem }
    ] as HappyService

    controller.someAction()
    assertEquals "specific value", givenSomeItem
}
...