当前位置:  开发笔记 > 编程语言 > 正文

作为"模拟者"TDD从业者,我应该在与被测试方法相同的类中模拟其他方法吗?

如何解决《作为"模拟者"TDD从业者,我应该在与被测试方法相同的类中模拟其他方法吗?》经验,为你挑选了2个好方法。

在阅读了Martin Fowler的Mocks Are Not Stubs之后,我发现我一直在以"模仿者"的方式练习TDD.

但我想知道即使是在模仿者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()(即使它们都是同一个类中的方法).在一个测试中,模拟confirm_or_create_connection()返回True,测试确认已调用sync(),另一个模拟confirm_or_create_connection()返回False,测试确认未调用sync().

这合理吗?或者我应该模拟confirm_or_create_connection()和sync()调用的对象?(我已经对这两种方法进行了其他测试.)

请不要通过解释我应该练习"经典"TDD来回答这个问题.这是另一个问题的答案:我应该练习模仿者还是经典的TDD?



1> Nat..:

该技术被称为"模拟对象",而不是"模拟方法".它鼓励将系统划分为易于组合的协作对象而远离程序代码的设计.目的是提高抽象级别,以便您通常通过编写对象来编程,而很少编写低级控制流语句.



2> Avdi..:

就个人而言,我认为嘲笑自我几乎总是代码味道.它正在测试实现而不是行为.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有