【发布时间】:2016-11-26 12:58:10
【问题描述】:
在我的单元测试中,我有 2 个 Mock 对象,我们称它们为 Book book 和 Shelf shelf。我想确保repair() 方法如果book 被我正在测试的代码首先调用,然后再通过putBack(Book) 类的putBack(Book) 方法放回shelf。
这里有一个简单的说明:
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 方法中,我在book.repair() 之前先调用shelf.putBack(),上面的测试也会通过。我试着做:
1 * shelf.putBack(book) >> {
1 * book.repair()
}
但无论哪个先到,测试仍然通过。
【问题讨论】:
-
你确定
shelf.putBack()在书没有修复的时候抛出异常吗? -
货架没有必要这样做。
标签: unit-testing groovy mocking spock