代码之家  ›  专栏  ›  技术社区  ›  Ronaldo Lanhellas

关于@Service Spring引导内的@Spy和@injectmock的澄清

  •  0
  • Ronaldo Lanhellas  · 技术社区  · 7 年前

    在我的测试类中,我有以下代码:

    @RunWith(MockitoJUnitRunner.class)
    public class CaixaServiceTest {
    
        @InjectMocks
        private CaixaService caixaService;
    
        @Mock
        private CaixaRepository caixaRepository;
    

    public void calcular(){
            int a = (int) Math.pow(1,3);
            log.info(a);
        }
    

    如果我打电话 caixaRepository.findOne(id) 应该返回null,因为findOne从未真正调用过,因为它只是一个mock。这个案子很有效。

    但是当我打电话的时候 caixaService.calcular() 方法体被执行(不应该,因为它是一个模拟),所以 log.info(a) 已登录到我的文件中。

    1 回复  |  直到 7 年前
        1
  •  2
  •   davidxxx    7 年前

    一切都好,但你对 @InjectMocks .
    事实上,用它来注释字段不会像您所想的那样创建模拟对象。

    请注意,这种注入依赖项的方法不是显式的,因此不会在测试中记录要模拟的依赖项。
    此外,如果依赖项注入失败,Mockito不会报告任何失败。