我有一个项目,我在其中使用.nettiers生成的代码作为我的DAL。Mocking .nettiers DataRepository调用
目前,我的测试包括物理设置每个测试数据库中的测试数据,然后允许nettiers对象击中数据库并根据需要返回。
显然,这并不是特别有效,到目前为止,我的250个奇数测试需要大约10分钟的时间才能运行,所以我一直在考虑在测试中添加嘲讽。
虽然我非常确定我理解嘲笑数据库调用的概念,但由于它与数据库的耦合性相当强,因此我无法将其应用于nettiers。
一个我想测试的方法是这样的(切略有下降为简洁起见):
public class InterfaceManagerService
{
public DataDocument SaveDataDocument(DataDocument entity)
{
var lookupEntity = DataRepository.DataDocumentProvider.GetByDocumentId(entity.DocumentId);
if (lookupEntity == null)
{
File fileEntity = new File();
fileEntity.Name = entity.Name;
var savedFileEntity = DataRepository.FileProvider.Save(fileEntity);
entity.FileId = savedFileEntity.FileId;
var savedEntity = DataRepository.DataDocumentProvider.Save(entity);
return (savedEntity);
}
}
}
目前,我使用的Typemock的试用版,因为这似乎做什么需要,但我愿意接受任何替代品,特别是开源软件。
我遇到的第一个问题是如果我应该创建一个InterfaceManagerService,DataRepository或实体本身的模拟实例(nettiers实体有一个可能有用的接口)。
第二个问题是,如何创建要返回的假对象,因为nettiers将一堆额外的属性放入实体中,如果我创建每个对象的假实例,则会导致大而粗糙的测试我很期待。我想最终的方法是用最好的方式为使用nettiers数据存储库方法的方法编写单元测试,但是为了避免碰到数据库,因为它似乎没有太多关于它的知识目前在互联网上。
你应该更清楚地知道你在找什么。这里的问题是相当开放的“一般指导”,就答案而言,最终会相当主观。例如,很难确定你是在寻找一个模拟框架(主观的),如果你有一个模拟框架并需要帮助(可回答),或者需要一般的帮助编写单元测试(对于单个问题来说太大) 。 –