繁体   English   中英

模拟asp.net核心5.0的框架

[英]Mocking framework for asp.net core 5.0

我最近安装了Visual Studio 2015并启动了一个带有网站和asp类库的项目,该库将包含网站的单元测试。 我通常使用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时,我会在选择ASP.NET 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"
}

}

Microsoft的ASP.NET团队为内部使用创建了一个特殊版本的Moq。 你可以在asp.net github页面上找到一个fork项目。

怎么用?

  • 在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> 

并使用Moq! :)

我想到目前为止,一个与asp.net core 5.0一起使用的Moq版本在nuget feed中不可用,但我认为你可以使用Asp.Net 5.0。

您应该能够将大多数库与aspnet50框架一起使用,因为它使用的是先前.net框架中可用的相同结构/ CLR“样式”。 这将包括Moq / Rhino / Nunit等。

在aspnetcore50中,您使用的是新的CoreCLR,并且需要使用也切换为与新CoreCLR库一起使用的依赖项。 Xunit已经在MS团队做到了这一点,以便他们可以进行单元测试,因此它的可用性。 我不知道有一个模拟框架,但我正在寻找一个。

因此,如果您通过删除aspnetcore50将项目限制为仅使用aspnet50框架,那么您应该可以使用任何内容。

请注意,这会给您一个限制,即您只能对主CLR可用的位置进行单元测试。 如果您希望应用程序在部署时运行在CoreCLR上,那么这可能会限制您(因为您没有严格测试相同的内容,尽管它们应该是等效的)。

关于NUnit可用性的github问题,这里有关于这些要点的更多讨论

参考: 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 Feed:

https://www.myget.org/F/aspnet-contrib/api/v3/index.json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM