在阅读 Martin Fowler 的Mocks Aren't Stubs之后,我发现我一直在以“mockist”的方式练习 TDD。
但我想知道,即使在 mockist TDD 中,如果一个人可以把嘲笑做得太过分。
这是Python 风格的伪代码的更新示例:
def sync_path(self):
if self.confirm_or_create_connection():
self.sync(self.dirpath)
confirm_or_create_connection() 方法创建到服务器的连接。
我在两个测试中测试了与此类似的方法,这两个测试都模拟了 confirm_or_create_connection() 和 sync() (即使它们都是同一个类中的方法)。在一个测试中,mock confirm_or_create_connection() 返回 True 并且测试确认 sync() 被调用,而在另一个测试中 mock confirm_or_create_connection() 返回 False 并且测试确认 sync() 没有被调用。
这合理吗?或者我应该模拟 confirm_or_create_connection() 和 sync() 调用的对象?(我已经对这两种方法进行了其他测试。)
请不要通过解释我应该练习“经典” TDD 来回答这个问题。这是另一个问题的答案:我应该练习 mockist 还是经典 TDD?