2016-03-19 9 views
0

Ich bin mit einem Problem moq und haben, wenn ich es in meinem Testprojekt mit Asp.Net 5 und MVC 6.Moq in Asp.Net 5 mit dnx50

verwenden installiert ich Moq von NuGet mit und installiert Moq 4.2.1510.2205. Als ich project.json geprüft, bekam ich

{ 
    "version": "1.0.0-*", 
    "description": "TargetTests Class Library", 
    "authors": [ "Admin" ], 
    "tags": [ "" ], 
    "projectUrl": "", 
    "licenseUrl": "", 

    "dependencies": { 
    "Target": "1.0.0-*", 
    "xunit": "2.2.0-beta1-build3239", 
    "xunit.runner.console": "2.2.0-beta1-build3239", 
    "xunit.runner.dnx": "2.1.0-rc1-build204" 
    }, 

    "commands": { 
    "test": "xunit.runner.dnx" 
    }, 

    "frameworks": { 
    "dnx451": { 
     "dependencies": { 
     "Moq": "4.2.1510.2205" 
     } 
    }, 
    "dnxcore50": { 
     "dependencies": { 
     } 
    } 
    } 
} 

Als ich Moq in einer cs-Datei hinzufügen möchten, bekam ich folgende Fehlermeldung

Severity Code Description Project File Line Suppression State 
Error CS0246 The type or namespace name 'Moq' could not be found (are you missing a using directive or an assembly reference?) TargetTests.DNX Core 5.0 C:\Users\Admin\Desktop\Target\src\TargetTests\TestBase.cs 6 Active 

Kann mir jemand helfen, um zu sehen, wie dieses Problem zu lösen? Ich habe StackOverfollow überprüft und die in Mocking framework for asp.net core 5.0 eingeführte Methode versucht, aber es ist fehlgeschlagen.

Antwort

1

Dies liegt daran, dass die von NuGet installierte Moq-Version die DNX-Plattform nicht unterstützt und Ihr Projekt für die Ausführung auf dieser Plattform konfiguriert ist, da in Ihrer project.json-Datei eine "dnxcore50"-Komponente vorhanden ist.

Wenn Sie den Cursor über einen Methodenaufruf an Moq schweben, sollten Sie etwas sehen: enter image description here

Um dies zu beheben, haben Sie zwei Möglichkeiten:

  1. Entfernen Sie die "dnxcore50" Komponente von Ihrem project.json-Datei. (Ihr Code funktioniert nur in Umgebungen, in denen ASP.Net 4.5.1+ installiert ist.)
  2. Fügen Sie eine Version von Moq hinzu, die das ASP.Net Core/DNX Framework unterstützt.

Wenn Sie die letztere Option tun möchten, funktionierte die second answer by Lucas Pyrzyk, als ich es ausprobiert (einschließlich der Kommentar unter seiner Antwort).

Fügen Sie zuerst eine Abhängigkeit zu Ihrer project.json zur moq.netcore-Bibliothek hinzu.

{ 
    "version": "1.0.0-*", 
    "description": "TargetTests Class Library", 
    "authors": [ "Admin" ], 
    "tags": [ "" ], 
    "projectUrl": "", 
    "licenseUrl": "", 

    "dependencies": { 
     "Target": "1.0.0-*", 
     "xunit": "2.2.0-beta1-build3239", 
     "xunit.runner.console": "2.2.0-beta1-build3239", 
     "xunit.runner.dnx": "2.1.0-rc1-build204" 
    }, 

    "commands": { 
     "test": "xunit.runner.dnx" 
    }, 

    "frameworks": { 
     "dnx451": { 
     "dependencies": { 
      "Moq": "4.2.1510.2205" 
     } 
     }, 
     "dnxcore50": { 
     "dependencies": { 
      "moq.netcore": "4.4.0-beta8" 
     } 
     } 
    } 

Dann fügen Sie eine Datei NuGet.config in der Wurzel des Projekts genannt, die es verwendet. Es ist Inhalt sollte wie folgt aussehen:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnet-contrib/api/v3/index.json" /> 
    <add key="NuGet" value="https://api.nuget.org/v3/index.json" /> 
    </packageSources> 
</configuration> 
1

Verwenden "Moq": "4.6.25-alpha"

Mein project.json:

{ 
     "version": "1.0.0-*", 
     "testRunner": "xunit", 
     "dependencies": { 
     "xunit": "2.2.0-beta2-build3300", 
     "dotnet-test-xunit": "2.2.0-preview2-build1029", 
     "Microsoft.AspNetCore.TestHost": "1.0.0", 
     "Moq": "4.6.25-alpha", 
     "Newtonsoft.Json": "9.0.1", 
     "System.Diagnostics.TraceSource": "4.0.0", 
     "System.Net.Http": "4.1.0" 
     }, 
     "frameworks": { 
     "netcoreapp1.0": { 
      "dependencies": { 
      "Microsoft.NETCore.App": { 
       "type": "platform", 
       "version": "1.0.0" 
      } 
      }, 
      "imports": [ 
      "dotnet5.4", 
      "portable-net451+win8" 
      ] 
     } 
     }, 

     "buildOptions": { 
     "copyToOutput": { 
      "include": [ "xunit.runner.json" ] 
     } 
     } 
}