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
- Editar
phpunit.xml
para cambiarDB_DATABASE
. - Crear
databasetesting.sqlite
endatabase/
. - Asegurar la configuración en
config/database.php
. - Configurar
.env.testing
correctamente . - Ejecutar migraciones antes de probar o usar
RefreshDatabase
.
Ahora, al ejecutar php artisan test
, Laravel usará databasetesting.sqlite
para tus pruebas. 🚀