Testing XUnit
En el caso de que estemos usando Xunit y necesitemos realizar testeos de unidad sobre nuestros endpoints, podemos incorporar la librería Infra.WebHost.Test
, la cual permite simular la carga de todos los módulos y componentes de nuestra aplicación, para que podamos realizar los testeos. También debemos agregar como referencia, nuestro proyecto principal, al proyecto de test y los archivos de configuración del proyecto (Podemos agregar los appsettings como Link, para no tener que duplicar los archivos y para que los cambios que hagamos en el proyecto se vean reflejados también en test) . A continuación podemos ver como implementar unit test utilizando PlatformApiTestFixture
para el testing de nuestro endpoints.
public class UnitTestModule : IClassFixture<PlatformApiTestFixture>
{
readonly PlatformApiTestFixture _platformFixture;
public UnitTestModule(PlatformApiTestFixture platformFixture)
{
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development");
Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "GoogleApiGateway");
_platformFixture = platformFixture;
}
[Fact]
public void Test1()
{
var client = _platformFixture.CreateClient();
var result = client.GetAsync("/api/v0/geocode").Result;
Assert.Equal(HttpStatusCode.OK, result.StatusCode);
}
}
Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "GoogleApiGateway");
Startup.cs
del proyecto principal a nuestro testing, con esto evitamos tener que inyectar todos los componentes de la aplicación en los unit test.
IMPORTANTE: Esto es solo para el testing de proyectos con soporte HTTP (Api).