相关疑难解决方法(0)

在单元测试中处理多个模拟和断言

我目前有一个存储库,它使用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)

c# nunit unit-testing repository-pattern rhino-mocks-3.5

2
推荐指数
1
解决办法
1553
查看次数