У меня есть класс, который вызывает метод в его конструкторе, и я хочу изменить только этот метод, чтобы я мог вставить свой собственный объект на место для облегчения тестирования.
Однако, когда я пытаюсь это сделать, онКажется, либо
- опция 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"