读完马丁·福勒(Martin Fowler)的Mocks Aren't Stubs之后,我发现我一直在以“模拟主义者”的方式练习TDD。
但是我想知道,即使在 mock 者TDD中,是否也可以 mock 得太远。
这是pythont伪代码中的更新后的示例:
def sync_path(self):
if self.confirm_or_create_connection():
self.sync(self.dirpath)
Confirm_or_create_connection()方法创建与服务器的连接。
我在两个测试中测试了一个与此方法类似的方法,它们都模拟了confirm_or_create_connection()和sync()(即使它们都是同一类中的两个方法)。在一个测试中,模拟的confirm_or_create_connection()返回True,然后测试确认已调用sync();在另一个测试中,模拟的confirm_or_create_connection()返回False;测试中确认未调用sync()。
这合理吗?还是应该 mock 那些用Confirm_or_create_connection()和sync()调用的对象? (我已经对这两种方法进行了其他测试。)
请不要通过解释我应该练习“古典” TDD来回答问题。这是另一个问题的答案:Should I practice mockist or classical TDD?
最佳答案
由于某种原因,该技术被称为“模拟对象”,而不是“模拟方法”。它鼓励设计将系统划分为易于组合,协作的对象,并且远离程序代码。目的是提高抽象级别,以便您大多数情况下都是通过编写对象来进行编程的,而很少编写低级的控制流语句。
关于tdd - 作为 "mockist"TDD的从业者,我应该模拟与被测方法在同一类中的其他方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/184729/