当我做一个测试时,我无法注入其中一个注入的bean的属性(使用@Spy)。我正在使用Mockito进行测试。

我在测试中尝试在此Bean中使用@Mock, @Spy, @SpyBean and @InjectMocks,但无法将其注入。

@RunWith(MockitoJUnitRunner.class)
public class MyTest{

    @InjectMocks private MyService = new myService();
    @Spy private MyFirtsDepen firstDepen;
    @Autowired @Spy private ChildDepen childDepen;

    ... More mocks and tests
}

@Service
public class MyService {
    @Autowired private MyFirstDepen firstDepen;
    ....
}

@Mapper
public class MyFirstDepen {
    @Autowired private ChildDepen childDepen;
    ....
}

@Component
public class ChildDepen {
    ...
}


当我的测试中使用firstDepen很好地工作时,但是当firstDepen使用childDepend时,总是获得Nullpointer。如何在测试中注入此属性?

最佳答案

由于您的MyFirtsDepen是模拟游戏,因此无法对其进行注入。配置模拟以返回另一个模拟。

when(firstDepen.getChildDepen()).doReturn(childDepen);

10-07 23:15