我读了《 TDD iOS开发》一书,感觉不明白假/存根/间谍/模拟词之间的区别。
这是本书中的代码示例:
ItemListDataProviderTests class:
extension ItemListDataProviderTests {
class MockTableView: UITableView {
var cellGotDequeued = false
override func dequeueReusableCell(
withIdentifier identifier: String,
for indexPath: IndexPath) -> UITableViewCell {
cellGotDequeued = true
return super.dequeueReusableCell(withIdentifier: identifier,
for: indexPath)
}
}
}
这里我们有模拟表视图,但是如果我们读Martin Fowler, which say next:
但是,这个MockTableView看起来并不像Mock。对我来说,它看起来像是间谍,因为它根本没有期望,但仍然需要记录一些信息。
这里的TableView是模拟还是间谍或其他东西?