2015-01-13 19 views
23

私は最近Visual Studio 2015をインストールし、WebサイトとWebサイトの単体テストを含むaspクラスライブラリを含むプロジェクトを開始しました。私は通常、モックのためにMoqを使用しますが、私は別のモックフレームワークを試してみるのは見知らぬ人ではありません。私が抱えている問題は、単体テストプロジェクトへの参照としてMoqを追加し、それを使用し始めたことです。私がコンパイルしようとするまで、最初はすべてうまく見えます。asp.netコア5.0のモックフレームワーク

私はというエラーメッセージが表示されましたコンパイル時:

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コア5.0を切り替えることができることに気づい

と選択ASP.NETをコア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" 
} 

} 
+0

これについてのブログを書いた。 https://neelbhatt40.wordpress.com/2016/10/15/moq-in-asp-net-core/ – Neel

答えて

8

私は、これまでのasp.netコア5.0で動作する部品番号のバージョンがnugetフィードに使用できませんが、私はあなたがAsp.Net 5.0で動作することができると思うと仮定します。

+2

"aspnetcore50"を削除しました:{"依存関係":{}}それが動作を開始しました – user1842278

+0

Lukasz Pyrzykには、以下のような更新された回答があり、Moqはaspnetcore50で作業しています。 –

4

ほとんどのライブラリはaspnet50フレームワークで使用できます。以前の.netフレームワークで使用可能だったのと同じ構造/ CLRの "スタイル"で動作します。これにはMoq/Rhino/Nunitなどが含まれます。

aspnetcore50では、新しいCoreCLRを使用しており、新しいCoreCLRライブラリでも動作するように変更された依存関係を使用する必要があります。 XunitはこれまでにMSチームが単体テストを行うようにしていたため、入手可能です。私はまだフレームを模倣していることに気づいていませんが、探しています。

したがって、aspnetcore50を削除してaspnet50フレームワークのみを使用するようにプロジェクトを制限した場合は、何でも使用できます。

ただし、これにより、メインCLRが使用可能な場所で単体テストしかできないという制限があります。アプリケーションがデプロイ時にCoreCLR上で実行されるようにする場合(同じものに対して厳密にテストしているわけではありませんが、同等である必要がありますが)、これは制限的な場合があります。

マイクロソフトからこれらの点here on a github issue about NUnit availability

26

ASP.NETチームのいくつかのより多くの議論がありますが、内部使用のための部品番号の特別バージョンを作成しました。フォークプロジェクトはasp.net github pageにあります。

これを使用する方法は?

  • project.jsonにおける部品番号の依存関係登録:プロジェクトのホームディレクトリのNuGet.configファイルを作成します

    { 
        "frameworks": { 
         "dnx451": { 
          "dependencies": { 
           "Moq": "4.2.1312.1622" 
          } 
         }, 
         "dnxcore50": { 
          "dependencies": { 
           "moq.netcore": "4.4.0-beta8" 
          } 
         } 
        } 
    } 
    
  • を。

    <?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> 
    

と部品番号を使用します!:)

+2

moq.netcoreを見つけるためにAspNetVNextの値を 'https:// www.myget.org/F/aspnet-contrib/api/v3/index.json'に設定しなければなりませんでした。 –

+1

[Armen Shimoonのブログ](http://dotnetliberty.com/index.php/2016/02/22/moq-on-net-core/)で提供されているdnxcore50にMoqを追加するための新しいNuGetフィードの追加に関する追加の詳細写真付き!) – brntsllvn

+2

この回答の冒頭にある[asp.net githubページ](https://github.com/aspnet/moq4)リンクは404壊れています。 – gerryLowry

0

文献から: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" 
    } 

} 

を追加しNugetは、以下のURLでフィードを作成する必要があり

:私が持っている

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