我目前有一个存储库,它使用Entity Framework进行我的CRUD操作.
这是注入我需要使用此repo的服务.
使用AutoMapper,我将实体Model投影到Poco模型上,并且服务返回poco.
如果我的对象有多个属性,那么设置然后断言我的属性的正确方法是什么?
如果我的服务有多个repo依赖项,那么设置我所有模拟的正确方法是什么?* - 一个类[setup],其中为这些测试装置配置了所有的模拟和对象?*****
我想避免进行10次测试,每次测试在属性上有50个断言,并且每次测试都有几十个模拟设置.这使得可维护性和可读性变得困难.
我已阅读Art of Unit Testing,但没有发现任何有关如何处理此案例的建议.
我使用的工具是Rhino Mocks和NUnit.
我也在SO上发现了这个,但它没有回答我的问题:正确的单元测试服务/存储库交互
这是一个表达我所描述内容的示例:
public void Save_ReturnSavedDocument()
{
//Simulate DB object
var repoResult = new EntityModel.Document()
{
DocumentId = 2,
Message = "TestMessage1",
Name = "Name1",
Email = "Email1",
Comment = "Comment1"
};
//Create mocks of Repo Methods - Might have many dependencies
var documentRepository = MockRepository.GenerateStub<IDocumentRepository>();
documentRepository.Stub(m => m.Get()).IgnoreArguments().Return(new List<EntityModel.Document>()
{
repoResult
}.AsQueryable());
documentRepository.Stub(a => a.Save(null, null)).IgnoreArguments().Return(repoResult);
//instantiate service and inject repo
var documentService = …
Run Code Online (Sandbox Code Playgroud)