Mockito中的@SpyBean
和@MockBean
注释有何区别?
我已经完成了JavaDoc,但没有找到差异。如果可能,请举例说明何时使用 MockBean 以及 SpyBean 。
答案 0 :(得分:15)
模拟(无论我们谈论普通的对象还是bean)都只是一个空壳"。
该模拟对象与基础生产代码没有任何关系。这是一个看起来的对象,就像是X类的对象一样。但X没有做过的任何方法或字段"真的"存在于那个被嘲笑的事情上。
而间谍围绕正在测试的类的现有对象包装。含义:当你创建一个间谍时,你可以决定进入间谍的方法调用应该是"拦截" (然后你正在使用间谍,好像它会是一个模拟);或者通过"通过"对于间谍缠绕的实际物体。
答案 1 :(得分:4)
非常重要的一点是,您要引用的两个注释来自Spring Boot,而不是Mockito(即使它们来自的Spring lib是基于Mockito的)
混合测试框架可能会导致混淆和不准确的结果。