如何使用 MSTEST 对 ASP.NET 核心控制器进行单元测试并添加假货

How to Unit Test ASP.NET CORE controller with MSTEST and add Fakes

我在 ASP.NET CORE 中有一个 MVC 项目。我添加了一个 class 库并在 project.json.

中添加了测试框架

测试方法似乎可以执行 运行。但是我有需要使用垫片和存根的场景。

例如 Web 客户端或接口方法。我无法在 ASP.NET CORE 中为 dll's 添加假货。我该怎么做?有什么方法可以在核心中填充 Web 客户端之类的方法吗?

添加的依赖项:

"dependencies": {
    "NETStandard.Library": "1.6.0",
    "dotnet-test-mstest": "1.0.1-preview",
    "MSTest.TestFramework": "1.0.0-preview"
  },

要创建模拟,您可以使用 "Moq": "4.6.25-alpha" 包。它适用于 .NET 核心,是 ASP.NET 团队使用的。

以下文章举例说明如何使用模拟进行单元测试。在文章中使用了 Xunit 但它与 MSTest 应该没有什么不同。

https://docs.asp.net/en/latest/mvc/controllers/testing.html

您还可以查看 MusicStore 示例的 xunit 测试: https://github.com/aspnet/MusicStore/tree/1.0.0/test/MusicStore.Test

您可以使用 Flurl 代替当前使用的 HttpClient。它具有测试功能。 http://tmenier.github.io/Flurl/testable-http/, 例如

using (var httpTest = new HttpTest()) {
        // Flurl is now in test mode 
       sut.CallThingThatUsesFlurlHttp(); // HTTP calls are faked!
}