一個注入的bean的屬性也是一個注入的bean的情況:
public class BeanOne{
@Autowired
private BeanTwo beanTwo;
public void get(){
beanTwo.doGet();
}
}
- 方式一:通過配置文件配置mock屬性
<bean class="com.BeanOne">
<bean class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.BeanTwo"/>
</bean>
測試用例直接使用
@Autowired
BeanOne beanOne;
beanOne.get();
- 方式二:使用注腳
- 該方式需要修改屬性的注入注腳未惰性加載,否則啟動時報錯:
@Autowired(required=false)
private BeanTwo beanTwo;
配置文件只用配置:
<bean class="com.BeanOne">
測試用例:
@Autowired @InjectMocks
BeanOne beanOne;
@Mock
BeanTwo beanTwo;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
Mockito.when(beanTwo.doGet()).thenReturn("two get");