以下是我所寻求的行为。我想要一个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
答案 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'
}