【发布时间】:2015-12-08 11:12:02
【问题描述】:
问题: 我有一个A类
class A {
@Autowired
EdocumentDAO eDocumentDAO;
public void createDocument(DocumentType docType)
{
String DocID= saveIndocRepo();//To be Mocked
docType.setID(DocID);
isSaved = eDocumentDAO.save()//Autowired
}
private String saveIndocRepo()
{
//Code to save in Repo in another platform and return the DOC_ID
}
}
我的 A_Test 课程
@ContextConfiguration({ "classpath:test-beans.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("test")
class A_test {
A a = Mockito.spy(new A());
Mockito.doReturn("DOC_ID").when(a).saveIndocRepo();
a.createDocument(docType);
}
要求:
我有方法saveIndocRepo(),它与外部服务交互并将文档保存在他们的仓库中。所以这需要被嘲笑。
在createDocument() 中调用并返回一个模拟值。收到DocID 后,其他文档详细信息将保存到数据库中(为此我配置了一个Derby In-memory DB)。 EdocumentDAO 在由弹簧实例化的自动装配上工作。
问题: 当我尝试模拟方法(saveInDocRepo)时,它成功模拟但自动装配失败。这会导致 JUnit 失败。 当我删除模拟时,自动装配会完美执行。
有什么我想念的吗?还是我的方法不正确。 专家 - 请提供适当的解决方案。
【问题讨论】:
标签: spring spring-mvc mockito junit4