2016-10-04 75 views
1

我想在使用moq和xunit的asp.net核心中编写一个非常简单的单元测试。 但是我运行单元测试时出现错误。单元测试时使用moq与asp.net核心

堆栈跟踪: 在Moq.Mock 1..ctor(MockBehavior behavior, Object[] args) at Moq.Mock 1..ctor(MockBehavior行为) 在Moq.Mock`1..ctor()

无法加载文件或程序集“System.Core程序,版本= 4.0 0.0' 。

以下是我的代码和project.json文件。

{ 
    "version": "0.1.0-*", 
    "testRunner": "xunit", 
    "dependencies": { 
    "Moq": "4.5.22", 
    "xunit": "2.2.0-beta2-build3300", 
    "dotnet-test-xunit": "2.2.0-preview2-build1029", 
    "IntegraPay.Domain": { 
     "version": "1.0.0-*", 
     "target": "project" 
    }, 
    "Integrapay.RegistrationApplication": { 
     "version": "", 
     "target": "project" 
    }, 
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1" 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "netcoreapp1.0", 
     "net45", 
     "net451" 
     ], 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     } 
     } 
    } 
    } 
} 


[Fact] 
     public async void GetAttributes() 
     { 
      Mock<IRegistrationRepository> repo = new Mock<IRegistrationRepository>(); 
      RegistrationManager manager = new RegistrationManager(repo.Object); 
      var item = await manager.CreateModel("1234"); 
     } 

回答

2

使用预览版本Moqhttps://blogs.msdn.microsoft.com/dotnet/2016/09/27/the-week-in-net-on-net-on-orchard-2-mocking-on-core-storyteller-armello/列出了与netstandard兼容的其他软件包。

您从不想在imports节点中为netcoreapp1.0定位应用程序添加net45x。应用程序很可能无法加载程序集(就像您的情况),或者在运行时运行到缺少的API。

+1

这意味着谁想要使用moq与asp.net核心1.0请使用moq版本4.6.38-alpha。 4.5.22的稳定版本由于某种原因将不起作用。 – maxspan

+0

不知道这些进口如何真正起作用,但删除dnx451为我解决了它 – VorobeY1326