无法在我的测试中注入Bean(@Spy注入的Bean的子代)

时间:2019-03-28 14:23:04

标签: java mockito

进行测试时,无法注入其中一个注入的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。如何在测试中注入此属性?

1 个答案:

答案 0 :(得分:1)

由于您的MyFirtsDepen是模拟游戏,因此无法向其中注入任何内容。配置模拟以返回另一个模拟。

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