mockito 真的不能模拟已经被 CGLIB 增强的对象吗?
public class Article {
@Autowired
private dbRequestHandler
@Autowired
private filesystemRequestHandler
@Transactional
public ArticleDTO getArticleContents() {
//extractText() and then save the data in DTO
//extractImages() and then save the data in DTO
// some other calls to other databases to save data in dto
return articleDTO;
}
public void extractText() {
//call to DB
}
public void extractImages() {
// call to file system
}
}
public class IntegrationTest {
@Autowired
private Article article;
//setup method {
articleMock = Mockito.spy(article);
doNothing().when(articleMock).extractImages();
}
}
在上面的例子中,doNothing().when(articleMock).extractImages();
它实际上调用了真正的函数。仔细看看文章 Mock 得到了两次增强。的一个原因autowiring
和第二个原因spying
。
如果我无法监视增强的对象,那么如何getArticle()
在我的集成测试中测试该方法,以便我可以验证是否返回了正确的 DTO。
注意:我实际上不想测试执行文件系统调用的方法。只是数据库。这就是为什么我需要测试该getArticle
方法。