当我们在测试类中指示mockito
提供一些模拟对象(用@Mock
注释这些属性字段)用于测试(可能注入到属性字段中@InjectMocks
),创建每个模拟遵循哪些规则?
更具体地说:
1)每个模拟是如何构建的?
2) 如何处理每个模拟的依赖关系?嘲笑时应考虑哪些规则和限制?
3)"模拟类A依赖于B类,B类依次被模拟(在同一测试类中)"的情况与"模拟类A依赖于B类,B类不被嘲笑"的情况不同吗?
模拟的想法与您的问题所暗示的完全相反:它们不是通过调用您的构造函数来调用的。这就是模拟的全部思想:它们与你的生产代码无关。
换句话说:你请求一个 A.class 的模拟对象;你得到一个支持 A.class 方法的对象。从这个意义上说,模拟的 A 对象没有任何依赖项。
你知道,这就是重点:如果一个被嘲笑的A和一个真正的A是一样的;嘲笑有什么意义呢?