¿No sería fantástico si sus pruebas PHPUnit se volvieran a ejecutar automáticamente cada vez que cambie algún código? Este paquete puede hacer exactamente eso.
Con el paquete instalado puedes hacer esto:
phpunit-watcher watch
Así es como se ve:
Esto ejecutará las pruebas y las volverá a ejecutar cada vez que se modifique un archivo en el directorio app
, src
o tests
.
¿Quieres pasar algunos argumentos a PHPUnit? No hay problema, simplemente pégalos:
phpunit-watcher watch --filter=it_can_run_a_single_test
En su excelente charla en Laracon EU 2017, Amo Chohan muestra nuestro phpunit-watcher en acción.
Invertimos muchos recursos en la creación de los mejores paquetes de código abierto. Puedes apoyarnos comprando uno de nuestros productos pagos.
Apreciamos mucho que nos envíe una postal desde su ciudad natal, mencionando cuál de nuestros paquetes está utilizando. Encontrarás nuestra dirección en nuestra página de contacto. Publicamos todas las postales recibidas en nuestro muro virtual de postales.
Puede instalar este paquete globalmente de esta manera
composer global require spatie/phpunit-watcher
Después de eso, phpunit-watcher watch
se puede ejecutar en cualquier directorio de su sistema.
Alternativamente, puede instalar el paquete localmente como una dependencia de desarrollo en su proyecto.
composer require spatie/phpunit-watcher --dev
Instalado localmente, puede ejecutarlo con vendor/bin/phpunit-watcher watch
Todos los ejemplos suponen que ha instalado el paquete globalmente. Si optó por la instalación local, anteponga vendor/bin/
en todos los lugares donde se mencione phpunit-watcher
.
Puedes iniciar el observador con:
phpunit-watcher watch
Esto ejecutará las pruebas y las volverá a ejecutar cada vez que se modifique un archivo en el directorio src
o tests
.
¿Quieres pasar algunos argumentos a PHPUnit? No hay problema, simplemente pégalos:
phpunit-watcher watch --filter=it_can_run_a_single_test
Cuando ejecuta phpunit-watcher
desde un script de Composer, es posible que necesite redirigir la entrada para que los comandos interactivos funcionen y deshabilitar el tiempo de espera predeterminado:
{
"scripts" : {
"test:watch" : [
" Composer \ Config::disableProcessTimeout " ,
" phpunit-watcher watch < /dev/tty "
]
}
}
En Windows, actualmente no se admite TTY, por lo que se ha deshabilitado cualquier interacción. Si bien la observación de cambios funciona, se deben proporcionar todos los argumentos para PHPUnit al llamar inicialmente phpunit-watcher
.
Se pueden modificar ciertos aspectos del comportamiento de la herramienta. El archivo de opciones puede denominarse .phpunit-watcher.yml
, phpunit-watcher.yml
o phpunit-watcher.yml.dist
. La herramienta buscará un archivo en ese orden.
Si no existe un archivo de configuración en el directorio del proyecto, la herramienta comprobará si existe un archivo en alguno de los directorios principales del directorio del proyecto.
A continuación se muestra un contenido de ejemplo. Siga leyendo para obtener una explicación más detallada de todas las opciones.
watch :
directories :
- src
- tests
fileMask : ' *.php '
notifications :
passingTests : false
failingTests : false
phpunit :
binaryPath : vendor/bin/phpunit
arguments : ' --stop-on-failure '
timeout : 180
Puede personalizar los directorios que se están supervisando creando un archivo llamado .phpunit-watcher.yml
en el directorio de su proyecto. A continuación se muestra un contenido de ejemplo:
watch :
directories :
- src
- tests
exclude :
- lib
fileMask : ' *.php '
ignoreDotFiles : true
ignoreVCS : true
ignoreVCSIgnored : false
Consulte la documentación de Finder para obtener más detalles.
Si experimenta retrasos en el rendimiento con repositorios grandes, intente agregar entradas exclude
para cualquier subdirectorio grande que no necesite monitorear. Habilitar las opciones ignore...
también puede resultar útil. También es importante asegurarse de que también esté utilizando la máscara de archivo '*.php'
.
De forma predeterminada, la herramienta mostrará notificaciones en el escritorio cada vez que las pruebas pasen o fallen. Si desea deshabilitar ciertas notificaciones de escritorio, actualice .phpunit-watcher.yml
agregando una clave notifications
.
notifications :
passingTests : false
failingTests : false
De forma predeterminada, la herramienta mostrará una ayuda para las acciones del teclado después de cada ejecución. Puede ocultar estos mensajes de ayuda agregando una clave hideManual
en .phpunit-watcher.yml
.
hideManual : true
De forma predeterminada, la herramienta usa vendor/bin/phpunit
como archivo binario PHPUnit predeterminado; sin embargo, puede ser útil poder personalizar este valor para las personas que tienen un archivo binario en una ubicación diferente.
Puede especificarlo en el archivo de configuración .phpunit-watcher.yml
. He aquí un ejemplo:
phpunit :
binaryPath : ./vendor/phpunit/phpunit/phpunit
Si desea pasar los mismos argumentos a PHPUnit cada vez que se inicia el observador, puede especificarlos en el archivo de configuración .phpunit-watcher.yml
. He aquí un ejemplo:
phpunit :
arguments : ' --stop-on-failure '
Al iniciar la herramienta con algunos argumentos (por ejemplo, phpunit-watcher watch --filter=my_favourite_test
), esos argumentos se utilizarán en lugar de los especificados en el archivo de configuración.
Consulte CHANGELOG para obtener más información sobre los cambios recientes.
composer test
Consulte CONTRIBUCIÓN para obtener más detalles.
Si encuentra un error relacionado con la seguridad, envíe un correo electrónico a [email protected] en lugar de utilizar el rastreador de problemas.
Eres libre de utilizar este paquete (tiene licencia del MIT), pero si lo utilizas con frecuencia, te agradeceremos mucho que nos envíes una postal desde tu ciudad natal, mencionando cuál de nuestros paquetes estás utilizando.
Nuestra dirección es: Spatie, Kruikstraat 22, 2018 Amberes, Bélgica.
Publicamos todas las postales recibidas en el sitio web de nuestra empresa.
Comenzamos a crear este paquete después de leer este excelente artículo de Christoper Pitt.
Los comandos interactivos se inspiraron en Jest.
La Licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.