2015-01-13 33 views
23

Recentemente ho installato Visual Studio 2015 e ho avviato un progetto con un sito Web e una libreria di asp class che conterrà i test unitari per il sito web. Di solito uso il Moq per deridere, ma non sono estraneo a provare un diverso sistema di derisione. Il problema che sto avendo è che ho aggiunto Moq come riferimento al progetto di test unitario e ho iniziato ad usarlo. Tutto sembra a posto all'inizio finché non ho provato a compilare.Framework di simulazione per asp.net core 5.0

Quando ho compilato ho ricevuto un messaggio di errore che dice:

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

ho notato che ho potuto passare da ASP.NET 5.0 e ASP.NET 5.0 Nucleo nella visualizzazione codice e quando si seleziona ASP.NET Core 5.0 ottengo errori ma non quando si seleziona ASP.NET 5.0. Ho provato a cercare una risposta ma non ho avuto fortuna.

È il problema che Moq non funziona con vnext e io dovrei usare un framework diverso (se sì che funziona?) O posso risolvere questo in qualche modo? mio 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

ho ha scritto un blog su questo. dai un'occhiata qui: https://neelbhatt40.wordpress.com/2016/10/15/moq-in-asp-net-core/ – Neel

risposta

8

suppongo che finora una versione di Moq che funziona con anima in asp.net 5.0 non è disponibile nel feed NuGet, ma penso che si può lavorare con Asp.Net 5.0.

+2

Ho rimosso "aspnetcore50": {"dipendenze": {}} e ha iniziato a funzionare – user1842278

+0

Lukasz Pyrzyk ha una risposta aggiornata di seguito che ottiene Moq che funziona con aspnetcore50. –

4

Dovresti essere in grado di utilizzare la maggior parte delle librerie con il framework aspnet50, poiché funziona con le stesse strutture/"stile" CLR che erano disponibili nei precedenti framework .net. Ciò includerebbe Moq/Rhino/Nunit ecc. Ecc.

In aspnetcore50 si sta utilizzando il nuovo CoreCLR e occorre utilizzare le dipendenze che vengono anche attivate per funzionare con le nuove librerie CoreCLR. Xunit ha già questo come i team MS hanno fatto in modo che potessero effettuare il test unitario, quindi la disponibilità. Non sono a conoscenza del fatto che esista ancora una struttura di derisione, ma ne sto cercando uno.

Pertanto, se si limita il progetto a utilizzare solo il framework aspnet50 rimuovendo aspnetcore50, si consiglia di utilizzare qualsiasi cosa.

Nota che questo ti dà la restrizione che puoi solo testare l'unità dove è disponibile il CLR principale. Questo potrebbe essere restrittivo per te se intendi che la tua app venga eseguita su CoreCLR una volta implementata (poiché non stai testando rigorosamente contro la stessa roba, anche se dovrebbero essere equivalenti).

C'è un po 'di discussione su questi punti here on a github issue about NUnit availability

26

squadra ASP.NET da Microsoft hanno creato una versione speciale di MOQ per uso interno. È possibile trovare un progetto di forcella sullo asp.net github page.

Come si usa?

  • registrare un dipendenze Moq in project.json:

    { 
        "frameworks": { 
         "dnx451": { 
          "dependencies": { 
           "Moq": "4.2.1312.1622" 
          } 
         }, 
         "dnxcore50": { 
          "dependencies": { 
           "moq.netcore": "4.4.0-beta8" 
          } 
         } 
        } 
    } 
    
  • Creare un file NuGet.config nella home directory del progetto.

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

E utilizzare Moq!:)

+2

Ho dovuto impostare il valore AspNetVNext su 'https: // www.myget.org/F/aspnet-contrib/api/v3/index.json' per trovare moq.netcore. –

+1

Ulteriori dettagli sull'aggiunta di un nuovo feed NuGet per aggiungere Moq a dnxcore50 fornito nel blog di [Armen Shimoon] (http://dotnetliberty.com/index.php/2016/02/22/moq-on-net-core/) (con immagini!) – brntsllvn

+2

il link [asp.net github page] (https://github.com/aspnet/moq4) all'inizio di questa risposta è 404 non funzionante. – gerryLowry

0

Rif da: https://neelbhatt40.wordpress.com/2016/10/15/moq-in-asp-net-core/

è necessario aggiungere di seguito le configurazioni in 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" 
    } 

} 

e quindi creare Nuget nutrono di seguito Url:

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

Problemi correlati