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);
    }
  }
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).