当我做一个测试时,我无法注入其中一个注入的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);