asp.net 核心 5.0 的模拟框架
Mocking framework for asp.net core 5.0
我最近安装了 Visual Studio 2015 并开始了一个项目,其中包含一个网站和一个 asp class 库,其中将包含网站的单元测试。我通常使用 Moq 进行模拟,但我对尝试不同的模拟框架并不陌生。我遇到的问题是我添加了 Moq 作为对单元测试项目的引用并开始使用它。起初一切似乎都很好,直到我尝试编译。
编译时收到一条错误消息:
ASP.NET Core 5.0 error CS0246: The type or namespace name 'Moq' could not be found (are you missing a using directive or an assembly reference?)
我注意到我可以在代码视图中在 ASP.NET 5.0 和 ASP.NET Core 5.0 之间切换,并且在选择 ASP.NET Core 5.0 时出现错误,但在选择 [=23 时没有=] 5.0。我试着寻找答案,但我没有任何运气。
问题是 Moq 不能与 vnext 一起使用,我应该使用不同的框架(如果可以的话,哪个可行?)或者我能以某种方式解决这个问题吗?
我的 project.json:
{
"version": "1.0.0-*",
"dependencies": {
"Web": "1.0.0-*",
"Xunit.KRunner": "1.0.0-beta1",
"xunit": "2.0.0-beta5-build2785",
"Moq": "4.2.1409.1722"
},
"frameworks": {
"aspnet50": {
"dependencies": {
}
},
"aspnetcore50": {
"dependencies": {
}
}
},
"commands": {
"test": "Xunit.KRunner"
}
}
我想到目前为止,与 asp.net core 5.0 一起工作的 Moq 版本在 nuget 提要中不可用,但我认为你可以与 Asp.Net 5.0 一起工作。
您应该能够将大多数库与 aspnet50 框架一起使用,因为它与以前的 .net 框架中可用的 structures/CLR "style" 相同。这将包括 Moq/Rhino/Nunit 等
在 aspnetcore50 中,您正在使用新的 CoreCLR,并且需要使用也已切换为与新的 CoreCLR 库一起使用的依赖项。 Xunit 已经有了这个,因为 MS 团队已经这样做了,所以他们可以进行单元测试,因此它是可用的。我还不知道有模拟框架,但正在寻找一个。
因此,如果您通过删除 aspnetcore50 将您的项目限制为仅使用 aspnet50 框架,那么您应该可以使用任何东西。
请注意,这会限制您只能在主 CLR 可用的情况下进行单元测试。如果您希望您的应用程序在部署时在 CoreCLR 上 运行(因为您没有严格测试相同的东西,尽管它们应该是等效的),这可能对您有限制。
ASP.NET Microsoft 团队创建了一个特殊版本的 Moq 供内部使用。您可以在 asp.net github page 上找到一个分支项目。
如何使用?
在project.json中注册一个Moq依赖:
{
"frameworks": {
"dnx451": {
"dependencies": {
"Moq": "4.2.1312.1622"
}
},
"dnxcore50": {
"dependencies": {
"moq.netcore": "4.4.0-beta8"
}
}
}
}
在项目主目录中创建一个 NuGet.config 文件。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="AspNetVNext" value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
并使用最小起订量! :)
参考自:https://neelbhatt40.wordpress.com/2016/10/15/moq-in-asp-net-core/
您需要在project.json
中添加以下配置
{
"version": "1.0.0-*",
"description": "AspNetCoreMoq.Test Class Library",
"authors": [ "armen" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516",
"AspNetCoreMoq": "",
"xunit": "2.1.0-rc1-build3168",
"xunit.runner.dnx": "2.1.0-rc1-build204",
"moq.netcore": "4.4.0-beta8"
}
}
},
"commands": {
"test": "xunit.runner.dnx"
}
}
然后使用以下 Url:
创建 Nuget 提要
我最近安装了 Visual Studio 2015 并开始了一个项目,其中包含一个网站和一个 asp class 库,其中将包含网站的单元测试。我通常使用 Moq 进行模拟,但我对尝试不同的模拟框架并不陌生。我遇到的问题是我添加了 Moq 作为对单元测试项目的引用并开始使用它。起初一切似乎都很好,直到我尝试编译。
编译时收到一条错误消息:
ASP.NET Core 5.0 error CS0246: The type or namespace name 'Moq' could not be found (are you missing a using directive or an assembly reference?)
我注意到我可以在代码视图中在 ASP.NET 5.0 和 ASP.NET Core 5.0 之间切换,并且在选择 ASP.NET Core 5.0 时出现错误,但在选择 [=23 时没有=] 5.0。我试着寻找答案,但我没有任何运气。
问题是 Moq 不能与 vnext 一起使用,我应该使用不同的框架(如果可以的话,哪个可行?)或者我能以某种方式解决这个问题吗? 我的 project.json:
{
"version": "1.0.0-*",
"dependencies": {
"Web": "1.0.0-*",
"Xunit.KRunner": "1.0.0-beta1",
"xunit": "2.0.0-beta5-build2785",
"Moq": "4.2.1409.1722"
},
"frameworks": {
"aspnet50": {
"dependencies": {
}
},
"aspnetcore50": {
"dependencies": {
}
}
},
"commands": {
"test": "Xunit.KRunner"
}
}
我想到目前为止,与 asp.net core 5.0 一起工作的 Moq 版本在 nuget 提要中不可用,但我认为你可以与 Asp.Net 5.0 一起工作。
您应该能够将大多数库与 aspnet50 框架一起使用,因为它与以前的 .net 框架中可用的 structures/CLR "style" 相同。这将包括 Moq/Rhino/Nunit 等
在 aspnetcore50 中,您正在使用新的 CoreCLR,并且需要使用也已切换为与新的 CoreCLR 库一起使用的依赖项。 Xunit 已经有了这个,因为 MS 团队已经这样做了,所以他们可以进行单元测试,因此它是可用的。我还不知道有模拟框架,但正在寻找一个。
因此,如果您通过删除 aspnetcore50 将您的项目限制为仅使用 aspnet50 框架,那么您应该可以使用任何东西。
请注意,这会限制您只能在主 CLR 可用的情况下进行单元测试。如果您希望您的应用程序在部署时在 CoreCLR 上 运行(因为您没有严格测试相同的东西,尽管它们应该是等效的),这可能对您有限制。
ASP.NET Microsoft 团队创建了一个特殊版本的 Moq 供内部使用。您可以在 asp.net github page 上找到一个分支项目。
如何使用?
在project.json中注册一个Moq依赖:
{ "frameworks": { "dnx451": { "dependencies": { "Moq": "4.2.1312.1622" } }, "dnxcore50": { "dependencies": { "moq.netcore": "4.4.0-beta8" } } } }
在项目主目录中创建一个 NuGet.config 文件。
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="AspNetVNext" value="https://www.myget.org/F/aspnetcidev/api/v3/index.json" /> <add key="NuGet" value="https://api.nuget.org/v3/index.json" /> </packageSources> </configuration>
并使用最小起订量! :)
参考自:https://neelbhatt40.wordpress.com/2016/10/15/moq-in-asp-net-core/
您需要在project.json
中添加以下配置{
"version": "1.0.0-*",
"description": "AspNetCoreMoq.Test Class Library",
"authors": [ "armen" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516",
"AspNetCoreMoq": "",
"xunit": "2.1.0-rc1-build3168",
"xunit.runner.dnx": "2.1.0-rc1-build204",
"moq.netcore": "4.4.0-beta8"
}
}
},
"commands": {
"test": "xunit.runner.dnx"
}
}
然后使用以下 Url:
创建 Nuget 提要