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.Client;
      var result = client.GetAsync("/api/v0/geocode").Result;
      Assert.Equal(HttpStatusCode.OK, result.StatusCode);
    }
  }
La siguiente linea:
Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "GoogleApiGateway");
Nos permite incorporar el 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).