unitarias test run pruebas dusk create php laravel laravel-5 phpunit environment

php - test - Aplicación Laravel 5 siempre utilizando configuración de entorno de "prueba"



pruebas unitarias laravel (3)

Tengo una aplicación Laravel 5 con dos entornos y dos configuraciones: prueba (para configuración PHPUnit, db en memoria) y local (configuración de mi desarrollo).

Incluso cuando el entorno está configurado para ser local , la aplicación solo carga la configuración en la carpeta resources/config/testing . Puedo ver el entorno en la misma aplicación desde la variable de entorno APP_ENV , y es local .

  • ¿Debo simplemente no estar usando un directorio de configuración de prueba para configurar mis pruebas?

  • ¿Cuál es una mejor manera de configurar mi entorno de prueba en Laravel 5?


Laravel 5 ya no conecta en cascada los archivos de configuración correctamente, por lo que su archivo de configuración de prueba anula todo lo que tenga en su archivo de configuración local.

Ahora no debe tener ninguna subcarpeta para cada entorno, sino establecer las configuraciones dentro del archivo .env en la carpeta raíz.

Este archivo no se ha registrado en el repositorio para garantizar que no se registra nada sensible en el repositorio. Debería tener un archivo .env por separado para cada entorno en el que está viviendo su aplicación.

PRUEBAS

Para la unidad php (funcional), puede establecer variables env en el archivo phpunit.xml, por ejemplo.

<php> <env name="APP_ENV" value="testing"/> <env name="CACHE_DRIVER" value="array"/> <env name="SESSION_DRIVER" value="array"/> </php>

Para las pruebas de behat (aceptación), la extensión Laracasts Laravel Behat le permite crear un archivo .env.behat para cambiar las variables de entorno.

Para las pruebas de phpspec (unidad), el entorno no debería importar ya que prueba los métodos individuales de forma aislada y se burla de todo lo demás.

Para la prueba de selenio (integración / sistema / e2e), las variables de entorno deben provenir del archivo .env en el servidor dondequiera que esté realizando esta prueba.


Puntos adicionales que acabo de tener que utilizar para ejecutar pruebas en sqlite, mientras que la aplicación principal suele tener como valor predeterminado mysql:

Agregue algo como esto a phpunit.xml, como lo explica craig.michael.morris:

<env name="DB_DRIVER" value="sqlite"/>

Y este cambio a config / database.php

''default'' => env(''DB_DRIVER'', ''mysql''),

Y en la sección ''sqlite'' de config / database.php

''database'' => '':memory:'',


1) abra el archivo de configuración database.php y agregue lo siguiente dentro de ''connections'' => [

''sqlite_testing'' => [ ''driver'' => ''sqlite'', ''database'' => '':memory:'', ''prefix'' => '''', ],

esto en memoria sqlite se usará para su prueba

2) abra el archivo .env y asegúrese de que tenga lo siguiente:

DB_CONNECTION=mysql

3) abra phpunit.xml y agregue lo siguiente dentro de la etiqueta <php> :

<env name="DB_CONNECTION" value="sqlite_testing"/>

aquí es donde puede agregar todas las variables de env relacionadas con las pruebas

4) en sus pruebas, si utilizó una conexión de base de datos use el Rasgo de migración de la base de datos:

use DatabaseMigrations;

para obtener más detalles sobre DatabaseMigrations, consulte la documentación https://laravel.com/docs/5.1/testing#resetting-the-database-after-each-test