# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://abi.gitbook.io/net-core/10.-pruebas-de-integracion/10.5-mejorando-tu-codigo/10.5.3-probando-con-sqlite.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
