我有两节课:
public MyService
{
@Autowired
private MyDao myDao;
private List list;
@PostConstruct
private void init(){
list = myDao.getItems();
}
}
现在我想在单元测试中涉及MyService,所以我会模仿MyDao的行为.
XML:
单元测试:
@ContextConfiguration("/test-context.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class MyServiceTest{
@Autowired
MyService myService
@Autowired
MyDao myDao;
@Resource
@Qualifier("responseItems")
private List responseItems;
@Before
public void setupTests() {
reset(myDao);
when(myDao.getItems()).thenReturn(responseItems);
}
}
这样做的问题是创建了MyService bean,并且在定义模拟行为之前调用了它的@PostConstruct bean.
如何在XML中定义模拟行为,或者在单元测试设置之后延迟@PostConstruct?