如何使用 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!
}
我在 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!
}