как получить отличный метод игнорирования MockFor / StubFor для использования метода спроса - PullRequest
5 голосов
/ 18 февраля 2012

Ниже поведение, которое я ищу.Я хочу, чтобы Groovy метод игнорирования MockFor вызывал метод по требованию, а не метод игнорирования, вызывающий метод dontIgnoreMe() напрямую.

По сути, я хочу заменить dontIgnoreMe() меня на макет, и пусть ignoreMe() вызовет макет (что я сделал с метаклассом) Похоже, что категории могут быть лучшим решением.Я загляну в эту на следующей неделе, см .: Groovy Nabble Feed

import groovy.mock.interceptor.MockFor

class Ignorable {
    def dontIgnoreMe() { 'baz' }
    def ignoreMe() { dontIgnoreMe() }
}

def mock = new MockFor(Ignorable)
mock.ignore('ignoreMe')
mock.demand.dontIgnoreMe { 'hey' }

mock.use {
    def p = new Ignorable()
    assert p.dontIgnoreMe() == 'hey'
    assert p.ignoreMe() == 'hey'
}

Assertion failed: 

assert p.ignoreMe() == 'hey'
       | |          |
       | baz        false
       Ignorable@6879c0f4

1 Ответ

1 голос
/ 30 июня 2017

Для заводных разработчиков я настоятельно рекомендую Spock Framework!

Используйте Шпион как в коде ниже:

def "Testing spy on real object with spock"() {
    given:
    Ignorable ignorable = Spy(Ignorable)
    when:
    ignorable.dontIgnoreMe() >> { 'hey' }
    then:
    ignorable.ignoreMe() == 'hey'
    ignorable.dontIgnoreMe() == 'hey'
}
...