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 は 2 倍に強化されています。の 1 つの原因autowiring
と の 2 番目の原因spying
。
強化されたオブジェクトをスパイできない場合getArticle()
、統合テストでメソッドをテストして、適切な DTO が返されることを確認するにはどうすればよいでしょうか。
注:実際には、ファイルシステム呼び出しを行うメソッドをテストしたくありません。DBのものだけです。getArticle
そのため、メソッドをテストする必要があります。