我如何获得一个groovy MockFor / StubFor ignore方法来使用demand方法

时间:2012-02-18 07:40:43

标签: unit-testing testing groovy mocking

以下是我所寻求的行为。我想要一个Groovy MockFor ignore method来调用一个demand方法,而不是直接调用dontIgnoreMe()方法的ignore方法。

基本上,我想用模拟替换dontIgnoreMe()我,并让ignoreMe()调用模拟(我用metaClass做过)看起来像类别可能是更好的解决方案。我将在下周调查,请参阅: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 个答案:

答案 0 :(得分:1)

对于groovy开发人员,我强烈推荐Spock Framework!

使用以下代码中的Spy

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