Skip to content

CambiarENV Testing

En Laravel, puedes configurar una base de datos diferente para los tests modificando el archivo de configuración phpunit.xml o gestionándolo directamente en config/database.php.


🔹 1. Modificar phpunit.xml

Laravel usa un entorno especial de testing definido en phpunit.xml. Para cambiar la base de datos de pruebas, edita la variable DB_DATABASE en la sección <env>:

<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value="database/databasetesting.sqlite"/>

Esto asegurará que las pruebas usen databasetesting.sqlite en lugar de database.sqlite.


🔹 2. Crear la Base de Datos de Pruebas

Debes asegurarte de que el archivo databasetesting.sqlite existe en la carpeta database/. Para crearlo, ejecuta:

touch database/databasetesting.sqlite

🔹 3. Configurar config/database.php

En el archivo config/database.php, Laravel define las conexiones de base de datos. Puedes asegurarte de que se use SQLite correctamente en testing agregando una configuración condicional:

'sqlite_testing' => [
    'driver' => 'sqlite',
    'database' => env('DB_DATABASE', database_path('databasetesting.sqlite')),
    'prefix' => '',
    'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],

Ahora Laravel usará esta configuración cuando definas DB_CONNECTION=sqlite_testing en .env.testing.


🔹 4. Modificar el Archivo .env.testing

Laravel usa .env.testing al ejecutar pruebas. Asegúrate de que tenga la configuración correcta:

DB_CONNECTION=sqlite
DB_DATABASE=database/databasetesting.sqlite

🔹 5. Ejecutar las Migraciones Antes de las Pruebas

Laravel no usa la base de datos en memoria por defecto en SQLite, así que asegúrate de ejecutar las migraciones antes de correr las pruebas:

php artisan migrate --env=testing

También puedes hacer que las pruebas ejecuten las migraciones automáticamente usando RefreshDatabase en tus test:

use Illuminate\Foundation\Testing\RefreshDatabase;

class ExampleTest extends TestCase
{
    use RefreshDatabase;

    public function test_example()
    {
        $this->assertTrue(true);
    }
}

Resumen

  1. Editar phpunit.xml para cambiar DB_DATABASE.
  2. Crear databasetesting.sqlite en database/.
  3. Asegurar la configuración en config/database.php .
  4. Configurar .env.testing correctamente .
  5. Ejecutar migraciones antes de probar o usar RefreshDatabase.

Ahora, al ejecutar php artisan test, Laravel usará databasetesting.sqlite para tus pruebas. 🚀