2016-10-04 8 views
1

moqとxunitを使用してasp.netコアに非常に簡単な単体テストを書こうとしています。 しかし、ユニットテストを実行するとエラーが発生します。ユニットテスト中にasp.netコアでmoqを使用する

のStackTrace:Moq.Mock 1..ctor(MockBehavior behavior, Object[] args) at Moq.Mock 1..ctorで (MockBehavior行動)Moq.Mock`1..ctor()で

ファイルまたはアセンブリをロードできませんでした「System.Core、バージョン= 4.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

Moqのプレビュービルドを使用してください。 https://blogs.msdn.microsoft.com/dotnet/2016/09/27/the-week-in-net-on-net-on-orchard-2-mocking-on-core-storyteller-armello/にはnetstandardと互換性のある他のパッケージが記載されています。

netcoreapp1.0ターゲティングアプリケーションの場合、importsノードにnet45xを追加することは決してありません。アプリケーションは、(あなたの場合のように)アセンブリをロードできないか、または実行時に欠落しているAPIに実行される可能性が非常に高いでしょう。

+1

つまり、asp.netコア1.0でmoqを使用したい人は、moqバージョン4.6.38-alphaを使用してください。 4.5.22の安定リリースは何らかの理由で動作しません。 – maxspan

+0

これらのインポートが実際にどのように機能しているかわかりませんが、dnx451を削除すると解決しました – VorobeY1326

関連する問題