使用MockFor和Demand来模拟构造函数中使用的方法,而不模拟整个构造函数

时间:2019-07-02 20:54:35

标签: groovy mocking

我有一个在其构造函数中调用方法的类,我只想修改该方法,以便可以将自己的对象放在适当的位置以方便测试。

但是,当我尝试此操作时,似乎还是

  • 默认的MockFor选项忽略ctor中发生的任何事情
  • MockFor具有interceptConstruction = true可以模拟整个构造函数

有没有一种方法可以仅模拟构造函数使用的方法?

import groovy.mock.interceptor.MockFor


class ConstructorCallsMethod {
    def data
    ConstructorCallsMethod() {
        println "Class: constructor"
        data = setData()
    }

    def setData() {
        println "Class: setData"
        return "value"
    }

}


def mock = new MockFor(ConstructorCallsMethod)

mock.demand.setData(0..1) {
    println "mocked setData called"
    return "modified"
}

def mocked = mock.proxyInstance()
assert mocked.data == "modified"

0 个答案:

没有答案