В моих модульных тестах у меня есть 2 объекта Mock, назовем их Book book
и Shelf shelf
. Я хочу убедиться, что метод repair()
, если book
вызывается первым фрагментом кода, который я тестирую, прежде чем он будет возвращен в shelf
с помощью метода putBack(Book)
класса Shelf
.Как проверить метод, вызванный в правильном порядке среди макетных объектов в Spock?
Вот быстрые иллюстрации:
def "Organize damaged books"() {
given:
Book book = Mock(Book)
Shelf shelf = Mock(Shelf)
when:
library.returnDamaged(book)
then:
1 * book.repair()
1 * shelf.putBack(book)
}
Испытание выше будет проходить, даже если в методе returnDamaged
, я называю shelf.putBack()
первую перед book.repair()
. Я пробовал:
1 * shelf.putBack(book) >> {
1 * book.repair()
}
Но тест все еще проходит независимо от того, что на первом месте.
Вы уверены, что 'shelf.putBack()' бросает исключение когда книга не была отремонтирована? –
Для полки не нужно делать это. –