2016-10-04 71 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