有一个单元测试,主要是模拟验证气味?

blu*_*ana 6 python language-agnostic tdd unit-testing

我有一个连接其他三个服务的类,专门用于实现其他服务更加模块化,但我的单元测试逻辑的大部分是模拟验证.有没有办法重新设计以避免这种情况?

Python示例:

class Input(object): pass

class Output(object): pass

class Finder(object): pass

class Correlator(object): pass
  def __init__(self, input, output, finder):
    pass
  def run():
    finder.find(input.GetRows())
    output.print(finder)
Run Code Online (Sandbox Code Playgroud)

然后我必须模拟输入,输出和查找器.即使我做了另一个抽象并从Correlator.run()返回一些内容,它仍然需要作为模拟进行测试.

Max*_*yko 2

只需问问自己:在这个特定的测试用例中您到底需要检查什么?如果此检查不依赖于其他类不是虚拟的,那么就可以了。

然而,很多模拟通常是一种味道,因为您可能试图在没有实际进行集成的情况下测试集成。因此,如果您假设类通过模拟测试,那么使用真实的类就可以了,那么您必须编写更多测试。

就我个人而言,我根本不写很多单元测试。我是 Web 开发人员,我更喜欢功能测试,即通过 HTTP 请求测试整个应用程序,就像用户所做的那样。您的情况可能有所不同