unit testserver test net mock asp c# asp.net moq asp.net-core

c# - testserver - Marco de burla para el núcleo 5.0 de asp.net



moq net core (4)

Recientemente instalé Visual Studio 2015 y comencé un proyecto con un sitio web y una biblioteca de clases asp que contendría las pruebas unitarias para el sitio web. Normalmente uso Moq para burlarse, pero no soy ajeno a probar un marco de burla diferente. El problema que tengo es que agregué Moq como referencia al proyecto de prueba de unidad y comencé a usarlo. Todo parece estar bien al principio hasta que intenté compilar.

Cuando compilé recibí un mensaje de error que decía:

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

Noté que podía cambiar entre ASP.NET 5.0 y ASP.NET Core 5.0 en la vista de código y al seleccionar ASP.NET Core 5.0, obtengo errores, pero no al seleccionar ASP.NET 5.0. Intenté buscar una respuesta pero no tuve suerte.

¿El problema es que Moq no funciona con vnext y debo usar un marco diferente (si es así, cuál funciona?) O puedo resolverlo de alguna manera? Mi proyecto.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" } }


Debería poder usar la mayoría de las bibliotecas con el marco aspnet50, ya que esto funciona con las mismas estructuras / CLR "estilo" que estaban disponibles en los marcos .net anteriores. Esto incluiría Moq / Rhino / Nunit etc. etc.

En aspnetcore 50 está utilizando el nuevo CoreCLR, y necesita usar dependencias que también se cambian para trabajar con las nuevas bibliotecas de CoreCLR. Xunit ya lo tiene como los equipos de MS lo hicieron para que pudieran realizar pruebas de unidad, por lo tanto, su disponibilidad. No estoy consciente de que todavía haya un marco de burla, pero estoy buscando uno.

Por lo tanto, si restringe su proyecto a solo usar el framework aspnet50 eliminando aspnetcore50, entonces debería estar bien para usar lo que sea.

Sin embargo, tenga en cuenta que esto le da la restricción de que solo puede realizar una prueba unitaria cuando el CLR principal está disponible. Esto podría ser restrictivo para usted si pretende que su aplicación se ejecute en CoreCLR cuando se implemente (ya que no está probando estrictamente las mismas cosas, aunque deberían ser equivalentes).

Hay más discusión sobre estos puntos aquí sobre un problema de github sobre la disponibilidad de NUnit


El equipo de ASP.NET de Microsoft ha creado una versión especial de Moq para uso interno. Puede encontrar un proyecto de bifurcación en la página github de asp.net .

¿Cómo usar eso?

  • Registrar un Moq dependencias en project.json:

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

  • Cree un archivo NuGet.config en el directorio de inicio del proyecto.

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

Y usa Moq! :)


Ref. De: neelbhatt40.wordpress.com/2016/10/15/moq-in-asp-net-core

Es necesario agregar las siguientes configuraciones en 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" } }

Y luego crea un feed de Nuget con la siguiente URL:

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


Supongo que hasta ahora una versión de Moq que funciona con asp.net core 5.0 no está disponible en el feed nuget, pero creo que puede trabajar con Asp.Net 5.0.