> For the complete documentation index, see [llms.txt](https://abi.gitbook.io/net-core/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://abi.gitbook.io/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo/10.5.3-probando-con-sqlite.md).

# 12.6.4 Probando con SQLite

Debido a que la base de datos en memoria no es una base de datos relacional, podemos probar con una base de datos en memoria como SQLite, la cual es muy sencilla de crear y utilizar.

Para SQLite agregamos un Agrega el siguiente paquete Nuget al proyecto CaducaRest Microsoft.EntityFrameworkCore.Sqlite

```shell
Install-Package Microsoft.EntityFrameworkCore.Sqlite 
```

En nuestro archivo **Startup.cs** cambia el código para agregar un case a la sección donde configuramos la base de datos para que si el environment es IntegrationTest utilice la base de datos de SQLite

**SqliteConnectionStringBuilder** y como **Datasource** le agregamos **:memory;** de esta forma la creara solamente en memoria.

Pasamos la cadena de conexión y por último agregamos el contexto como **UseSqlite**

{% tabs %}
{% tab title="Startup.cs" %}

```csharp
public void ConfigureServices(IServiceCollection services)
{
    switch (CurrentEnvironment.EnvironmentName)
    {
        case "Testing":
            //Conexión en Memoria
            services.AddDbContext<CaducaContext>(opt => 
                  opt.UseInMemoryDatabase("Caduca")
                  .ConfigureWarnings(x => x.Ignore
                     (InMemoryEventId.TransactionIgnoredWarning)));
              break;
        case "IntegrationTesting":
            var connection = new SqliteConnection
                      ("DataSource=:memory:");
            connection.Open();
             services.AddDbContext<CaducaContext>(opt => 
                           opt.UseSqlite(connection));

            break;
        default:
            //Conexión MySQL
            services.AddDbContext<CaducaContext>(options => 
                   options.UseMySql(Configuration
                     .GetConnectionString("DefaultConnection")));
            //Conexión SQL Server
            //services.AddDbContext<CaducaContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SQLServerConnection")));
            //Conexión SQL Server Azure
            //services.AddDbContext<CaducaContext>(options => options.UseSqlServer(Configuration.GetConnectionString("AzureSQLConnection")));
            break;
    }
}
```

{% endtab %}
{% endtabs %}

Cambiamos también en nuestra clase **CaducaContext** en el constructor, la instrucción **Database.EnsureCreated,** el cual crea la base de datos de SQLite en caso de que no exista.

{% tabs %}
{% tab title="CaducaContext.cs" %}

```csharp
public CaducaContext(DbContextOptions<CaducaContext> options) 
                                                 : base(options)
{
    Database.EnsureCreated();
}
```

{% endtab %}
{% endtabs %}

Cambiamos en nuestro proyecto **CaducaRest.IntegrationTest** nuestra clase **Servicios.cs** para que utilice el ambiente **IntegrationTesting.**

{% tabs %}
{% tab title="Servicios.cs" %}

```csharp
public static void Inicializa()
{
    //Creamos un servidor de pruebas utilizando un ambiente
    //de testing
    var builder = new WebHostBuilder().UseEnvironment("IntegrationTesting")
```

{% endtab %}
{% endtabs %}

Puedes volver a correr tus pruebas, y agregar en Azure para que después de ejecutar las pruebas unitarias también ejecute las pruebas de integración.

{% code title="azure.pipelines" %}

```yaml
- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **\CaducaRest.IntegrationTest.dll
      !**\*TestAdapter.dll
      !**\obj\**
    searchFolder: '$(System.DefaultWorkingDirectory)'
```

{% endcode %}
