在DocInfoServiceImpl中,我有以下方法,我正在尝试使用easymock进行模拟。但我不清楚如何返回使用随机uuid值(相关和docfamily)创建并从私有方法返回的docInfo对象?
public void saveDocInfo(String docId)
{
**DocInfo docInfo = createDocInfo(docId);**
LOG.debug("Attempting to persist the doc info object for docId [" + docId + "]");
docInfoDao.save(docInfo);
LOG.debug("Persisted the doc info object for docId [" + docId + "]");
}
private DocInfo createDocInfo(String docId)
{
final DocInfo docInfo = new DocInfo();
docInfo.setId(docId);
docInfo.setDocFamilyUuid(UUIDGenerator.getInstance().getUuidAsString());
docInfo.setCorrelationId(UUIDGenerator.getInstance().getUuidAsString());
return docInfo;
}
在我正在使用的测试中,mockDocInfoDao.save在第3行的服务的saveDocInfo中被调用。
void testSave()
{
def String docId = 'I19292800fe1911e0a849005056932b99'
mockDocInfoDao.save(expectedDocInfo)
replay(mockDocInfoDao)
docInfoServiceImpl.saveDocInfo(docId)
verify(mockDocInfoDao)
}
答案 0 :(得分:0)
私人方法无意进行测试,因为它们可能会发生变化。
使用EasyMock,您将检查saveDocInfo中是否至少有一次调用save。所以你可以实例化DocInfo并在testSave()
中传递它 void testSave() {
def String docId = 'I19292800fe1911e0a849005056932b99'
mockDocInfoDao.save(new DocInfo())
replay(mockDocInfoDao)
docInfoServiceImpl.saveDocInfo(docId)
verify(mockDocInfoDao)
}
答案 1 :(得分:0)
我在代码中看到的最大缺陷是使用静态方法。 它确实加强了测试任务(请参阅此视频http://www.youtube.com/watch?v=XcT4yYu_TTs)。
你能以某种方式更新UUIDGenerator类吗? 也许你可以用一个调用这个UUIDGenerator的实例方法创建一个适配器类?