最小起订量-如何进入真正的方法?

昏昏欲睡

我想使用测试数据作为输入,进入真正的方法。

调用GetSurveyList时,它不会注意我给它的日期。它总是返回我手动添加到模拟模型中的所有三个项目。它应该检查日期,并且仅返回日期等于或大于输入日期的那些项目。

如果我介入,那么我只会深入到界面。调用的下一步应该转到实现该接口的代码,而没有。这是Moq的标准行为吗?我以为它可以让您介入?

这是我的代码:

[TestMethod]
public void TestHasListOfSurveys()
{
    var mockRepository = new Mock<ISurveyListRepository>();
    var mockModel = new List<SurveyList>();
    mockModel.Add(new SurveyList { SurveyID = 1, SurveyName = "test1", DeliveryDate = DateTime.Parse("1/1/2014") });
    mockModel.Add(new SurveyList { SurveyID = 2, SurveyName = "test2", DeliveryDate = DateTime.Parse("6/1/2014") });
    mockModel.Add(new SurveyList { SurveyID = 3, SurveyName = "test3", DeliveryDate = DateTime.Parse("12/1/2014") });

    string testDate = DateTime.Today.ToShortDateString();

    mockRepository.Setup(x => x.GetSurveyList(testDate)).Returns(mockModel);

    var testClass = new SurveyListModel(mockRepository.Object);
    var testModel = testClass.GetSurveyList(testDate);

    mockRepository.VerifyAll();

    Assert.IsTrue(testModel.Count > 0);
}

从资源库中获取GetSurveyList:

公共类SurveyListRepository:ISurveyListRepository

public List<SurveyList> GetSurveyList(String deliveryDateAfterInput)
{
    List<SurveyList> SurveyLists = new List<SurveyList>();
    string error = string.Empty;

    using (OrderingEntities db = DierbergsAppLib.Entities.EntityFactory.GetInstance<OrderingEntities>(
               new DierbergsAppLib.Entities.EntityFactory.EntityFactoryOptions()
               {
                   EntityNameInConfigFile = "OrderingEntities",
                   ConnectionStringCacheManager = new DierbergsAppLib.Entities.WebCacheConnectionStringManager()
               },
               out error))
    {
        DateTime deliveryDateFilter = Convert.ToDateTime(deliveryDateAfterInput);

        var SurveyList = db.uspOrderSurveyListAllStoresGet(deliveryDateFilter);

        foreach (uspOrderSurveyListAllStoresGet_Result viewsurvey in SurveyList)
        {
           // SurveyLists.Add( )
        }
    }

    List<SurveyList> all = SurveyLists.OrderBy(x => x.SurveyDueDate).ToList();
    return all;
}

来自模型的GetSurveyList:

公共类SurveyListModel

public List<SurveyList> GetSurveyList(String deliveryDateAfterInput)
{
    return _repository.GetSurveyList(deliveryDateAfterInput);
}
谢尔盖·别列佐夫斯基(Sergey Berezovskiy)

测试是您代码的规范。让我们考虑一下SurveyListModel您要通过此测试指定哪种行为方案在这种情况下,逻辑非常简单:

SurveyListModel应该从存储库返回指定日期的调查

因此,如果您停下来思考,那就不应该验证返回的调查的日期。SurveyListModel职责不涉及以任何方式修改存储库响应。它应该执行以下操作-将date参数传递到一种特定的存储库方法,然后将存储库响应返回给调用方。没有其他的。这就是您应该验证的内容。

var repositoryMock = new Mock<ISurveyListRepository>();
string date = DateTime.Today.ToShortDateString();
repositoryMock.Setup(r => r.GetSurveyList(date)).Returns(CreateTestSurveys());
var model = new SurveyListModel(repositoryMock.Object);

var surveys = model.GetSurveyList(date);

repositoryMock.VerifyAll();
CollectionAssert.AreEqual(CreateTestSurveys(), surveys);

该测试验证

  • 调查清单称为存储库的正确方法(如果未调用方法,则验证将失败)
  • 传递了正确的日期(如果SurveyListModel将不同的日期传递到存储库,则将不会执行设置)
  • 调查清单返回的信息从存储库获得的调查完全相同(如果SurveListModel将返回不同的调查或以任何方式修改存储库响应,则断言将失败)。

您应该了解,在这种情况下,返回哪个存储库确实无关紧要。可以是带有任何日期的调查,也可以是上面的空列表。您应该只验证SUT返回了完全相同的集合。

注意:DateTime用于传递日期值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

最小起订量-如何进入真正的方法?

来自分类Dev

最小起订量框架的真正目的

来自分类Dev

如何为方法的内联逻辑设置最小起订量

来自分类Dev

如何在最小起订量中使用设置方法?

来自分类Dev

使用最小起订量设置和返回的正确方法

来自分类Dev

具有IQueryable扩展方法的最小起订量

来自分类Dev

最小起订量和多种方法设置

来自分类Dev

使用最小起订量设置和退货的正确方法

来自分类Dev

可测试的代码与静态方法?(最小起订量)

来自分类Dev

在覆盖抽象方法时使用最小起订量?

来自分类Dev

具有IQueryable扩展方法的最小起订量

来自分类Dev

如何找出最小起订量中缺少什么?

来自分类Dev

最小起订量在一个类中只有一种方法

来自分类Dev

最小起订量如果方法设置相交会发生什么?

来自分类Dev

最小起订量:更改设置返回通用方法来处理异步参数

来自分类Dev

最小起订量错误-预期使用'bool IsAny(HttpResponseMessage)'的方法

来自分类Dev

如何设置最小起订量以接受给定Expression <T>的任何实例?

来自分类Dev

如何在 DataContext 中正确起订量 ExecuteQuery 方法?

来自分类Dev

最小起订量:无效的回调。具有参数的方法上的设置无法调用具有参数的回调

来自分类Dev

最小起订量定义严格的模拟

来自分类Dev

任务待定的最小起订量

来自分类Dev

最小起订量设置返回null

来自分类Dev

对象的最小起订量设置属性

来自分类Dev

最小起订量设置返回null

来自分类Dev

最小订量:如何使用带有内部HttpClient的Nunit来测试类?

来自分类Dev

使用最小起订量测试存储库

来自分类Dev

异步操作的最小起订量测试不起作用

来自分类Dev

依赖注入和最小起订量的单元测试

来自分类Dev

最小起订量引发任何成员的异常

Related 相关文章

  1. 1

    最小起订量-如何进入真正的方法?

  2. 2

    最小起订量框架的真正目的

  3. 3

    如何为方法的内联逻辑设置最小起订量

  4. 4

    如何在最小起订量中使用设置方法?

  5. 5

    使用最小起订量设置和返回的正确方法

  6. 6

    具有IQueryable扩展方法的最小起订量

  7. 7

    最小起订量和多种方法设置

  8. 8

    使用最小起订量设置和退货的正确方法

  9. 9

    可测试的代码与静态方法?(最小起订量)

  10. 10

    在覆盖抽象方法时使用最小起订量?

  11. 11

    具有IQueryable扩展方法的最小起订量

  12. 12

    如何找出最小起订量中缺少什么?

  13. 13

    最小起订量在一个类中只有一种方法

  14. 14

    最小起订量如果方法设置相交会发生什么?

  15. 15

    最小起订量:更改设置返回通用方法来处理异步参数

  16. 16

    最小起订量错误-预期使用'bool IsAny(HttpResponseMessage)'的方法

  17. 17

    如何设置最小起订量以接受给定Expression <T>的任何实例?

  18. 18

    如何在 DataContext 中正确起订量 ExecuteQuery 方法?

  19. 19

    最小起订量:无效的回调。具有参数的方法上的设置无法调用具有参数的回调

  20. 20

    最小起订量定义严格的模拟

  21. 21

    任务待定的最小起订量

  22. 22

    最小起订量设置返回null

  23. 23

    对象的最小起订量设置属性

  24. 24

    最小起订量设置返回null

  25. 25

    最小订量:如何使用带有内部HttpClient的Nunit来测试类?

  26. 26

    使用最小起订量测试存储库

  27. 27

    异步操作的最小起订量测试不起作用

  28. 28

    依赖注入和最小起订量的单元测试

  29. 29

    最小起订量引发任何成员的异常

热门标签

归档