【问题标题】:How should I use Mocking and Fakes under .NET Core 1.1 or higher?我应该如何在 .NET Core 1.1 或更高版本下使用 Mocking 和 Fakes?
【发布时间】:2017-09-27 01:40:06
【问题描述】:

我已经使用 .NET Framework 4.X 多年了,我刚刚切换到 .NET Core 。由于我想做TDD,所以我想使用一个模拟框架和微软假货。但是,我不清楚如何为 .NET Core 执行此操作,因为不支持经典解决方案。

谁能告诉我应该如何在 .NET Core 1.1 下使用 Mocking 和 Fakes?

【问题讨论】:

  • 您使用什么 IDE 来开发 .NET Core 应用程序?
  • VS 2017 是我使用的 ide,但我愿意进行更改
  • 您有没有发现如何将 MS Fakes 与 Core 一起使用?
  • 从未使用过微软的假货,但我们在我们的 ASP.NET Core 项目中使用了 xUnit、NSubstitute 和 AutoFixture 的组合,它就像一个魅力......所以你可以检查一下。
  • 这是他们的路线图。见developercommunity.visualstudio.com/idea/351467/…

标签: unit-testing asp.net-core mocking microsoft-fakes


【解决方案1】:
  1. 使用 nuget 安装“起订量”
  2. 使用 NUnit 或类似工具创建单元测试
  3. 这样写:

        // Arrange
        var mock = new Mock<IRepository>();
        mock.Setup(repo=>repo.GetAll()).Returns(GetTestPhones());
        var controller = new HomeController(mock.Object);
    
        // Act
        var result = controller.Index();
    
        // Assert
        var viewResult = Assert.IsType<ViewResult>(result);
        var model = Assert.IsAssignableFrom<IEnumerable<Phone>>(viewResult.Model);
        Assert.Equal(GetTestPhones().Count, model.Count());
    

【讨论】:

  • 虽然这可以正常工作,但它不是使用 Assert.Equal 检查集合大小的好方法。 Take a look here
  • 这里没有提到微软的假货。垫片和存根呢?
  • 对不起,没想到是关于某个框架的,我把问题理解为一般的嘲笑和伪装
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 2016-05-10
相关资源
最近更新 更多