unit test run pruebas make example ejecutar descargar php testing include phpunit phpstorm

test - ¿Cómo incluir un archivo en la prueba phpunit?



test artisan (3)

Creo que su ruta de inclusión es incorrecta. Tu estructura puede ser algo como esto
ParentDir
-> nifvalidation.php
-> testsFolder
-> NifvalidationTest.php

en lugar de

include(''/../nifvalidation.php'')

utilizar

include(dirname(__FILE__)."/../nifvalidation.php");

Tengo problemas para incluir un archivo en una prueba phpunit. Por ejemplo: cuando ejecuto el siguiente código en PhpStorm obtengo el resultado esperado.

Código:

class NifvalidationTest extends PHPUnit_Framework_TestCase { public function test_apiRequest() { $result = 1+1; $this->assertEquals(2, $result); } }

Salida:

Testing started at 16:58 ... PHPUnit 5.2.12 by Sebastian Bergmann and contributors. Time: 120 ms, Memory: 11.50Mb OK (1 test, 1 assertion) Process finished with exit code 0

Pero cuando necesito acceder a un método de otra clase usando el include, no obtengo el resultado esperado. Solo como ejemplo, cuando ejecuto el siguiente código:

class NifvalidationTest extends PHPUnit_Framework_TestCase { public function test_apiRequest() { include(''/../nifvalidation.php''); $result = 1+1; $this->assertEquals(2, $result); } }

Obtengo esto en lugar del resultado esperado:

Testing started at 17:05 ... PHPUnit 5.2.12 by Sebastian Bergmann and contributors. Process finished with exit code 0

¿Alguna idea sobre por qué el incluir está rompiendo la prueba?

Nota 1: en el ejemplo anterior, no necesito incluir el archivo, pero necesito otro examen.

Nota 2: La ruta al archivo ''nifvalidation.php'' es correcta.


Puede usar el indicador de bootstrap cuando invoque las pruebas desde la línea de comando para incluir cualquier archivo, definir constantes y cargar todas sus variables, clases, etc.

--bootstrap <file> A "bootstrap" PHP file that is run before the tests.

Por ejemplo, cree un autoload.php que defina las constantes e incluya sus archivos, luego puede invocarlo desde la línea de comando como tal:

phpunit --bootstrap autoload.php testsFolder/NifvalidationTest

Para un enfoque más automatizado, también puede crear un archivo phpunit.xml que contiene la información de arranque:

<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="autoload.php"> <testsuites> <testsuite name="Nifvalidation Test Suite"> <directory>./testsFolder</directory> </testsuite> </testsuites> </phpunit>

En este caso específico, en función de sus comentarios sobre los contenidos de nifvalidation.php el script se cierra porque PS_VERSION no está definido. Si está haciendo pruebas de unidades aisladas que simplemente requieren una constante ficticia definida, entonces puede definir que esté presente en su entorno de prueba. Luego, simplemente puede nifvalidation.php su archivo nifvalidation.php .

<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="../nifvalidation.php"> <testsuites> <testsuite name="Nifvalidation Test Suite"> <directory>./testsFolder</directory> </testsuite> </testsuites> <php> <const name="PS_VERSION" value="whatever you need here"/> </php> </phpunit>


Use require() o require_once() lugar de usar include()