Это кажется основным, поэтому я ожидаю, что это будет обманом ... но я не нашел ничего, что ответило бы на этот вопрос.
Мой код приложения также Groovy. Скажи, у меня есть поле
def something
и в моем тесте (где CUT - это Спок Spy
) я запускаю метод, в середине которого есть строка
something = null
или
something = new Bubble()
... Я просто пытаюсь найти способ проверить, что что-то действительно было установлено на null
(или любое значение ...)
В моем then
блоке я пробовал:
1 * spyCUT.setSomething( null )
и
1 * spyCUT.setSomething(_)
и
1 * spyCUT.set( 'something', _ )
Кстати, в ответ на возражение, что я могу просто проверить значение something
в блоке then
, ситуация такова, что something
должен быть установлен сначала на одно значение, а затем на другое в Конечно, этот метод ...
Прочитав Groovy в действии, 2-е издание У меня самые смутные представления о том, как Groovy работает с получением и настройкой полей ... Понятно, недостаточно.
MCVE (FWIW!)
class Spocko {
def something
def doStuff() {
something = 'fruit'
}
}
class SpockoTest extends Specification {
def 'test it'(){
given:
Spocko spySpocko = Spy( Spocko )
when:
spySpocko.doStuff()
then:
1 * spySpocko.setSomething(_)
}
}
ПОЗЖЕ (после очень полезного ответа kriegaex)
С указанным выше SpockTest
, где setSomething
равно , вызванному:
class Spocko {
def something
def doStuff() {
this.each{
it.something = 'fruit'
}
}
}
... проходит! Я пытаюсь понять, почему ...
Кстати, я также обнаружил, что следующие проходы (и не без закрытия):
1 * spySpocko.setProperty( 'something', _ )