Я следующие спецификации:Проверка вызова метода в конструкторе
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
@Grab('cglib:cglib:3.1')
@Grab('org.ow2.asm:asm-all:5.0.3')
import spock.lang.*
class Whatever extends Specification {
def "bind view to object in constructor"() {
given:
def view = Mock(View)
def binder = Mock(Binder)
when:
def holder = new Holder(binder, view)
then:
1 * binder.bind(holder, view)
}
}
class Binder {
def bind(Holder holder, View view) {}
}
class View {}
class Holder {
Holder(Binder binder, View view) {
binder.bind(this, view)
}
}
который терпит неудачу с:
groovy.lang.MissingPropertyException: Нет такого свойства: держатель для класса: Независимо от
по следующей линии:
1 * binder.bind(holder, view)
в then
блок.
Я знаю, почему он терпит неудачу, поскольку then
оценивается до when
. Вопрос в том, как он может протестировать этот вызов конструктора binder.bind()
без каких-либо сложных обходных решений?
Спасибо, я знаю об этом решении. Это также является обходным решением. – Opal
Просто добавил пример, показывающий, как захватывать аргументы с закрытием. – jalopaba