最佳答案
我知道我如何使用这些术语,但我想知道对于单元测试,是否有伪造、嘲笑和存根的公认定义?你如何为你的测试定义这些?描述你可能使用它们的情况。
以下是我如何使用它们:
假:实现接口但包含固定数据而没有逻辑的类。根据实现简单地返回“好”或“坏”数据。
Mock:一个类,它实现了一个接口,允许动态设置从特定方法抛出的返回/异常的值,并提供检查特定方法是否被调用/未调用的能力。
存根:类似于模拟类,除了它不提供验证方法已被调用/未被调用的能力。
模拟和存根可以手动生成,也可以由模拟框架生成。假类是手动生成的。我使用模拟主要是为了验证我的类和依赖类之间的交互。一旦我验证了交互,我就会使用存根,并且正在通过我的代码测试替代路径。我使用假类主要是为了抽象出数据依赖关系,或者当模拟/存根每次设置都太乏味时。