mock一个bean的属性也是一个bean的情况
一个注入的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");