Advertencia
Se recomienda encarecidamente actualizar a CodeIgniter4.
Una forma más sencilla de utilizar PHPUnit con CodeIgniter 3.x.
No es necesario modificar los archivos principales de CodeIgniter en absoluto.
Puede escribir pruebas de controlador fácilmente.
Quizás nada sea incomprobable.
Bien documentado.
PHP 7.3 o posterior
Si usa Monkey Patching, debe usar PHP-Parser 4.2 o posterior como dependencia de Composer.
CodeIgniter 3.x
Si desea actualizar a CodeIgniter4, consulte el n.º 361.
PHPUnit 9.3 o posterior
Si desea utilizar PHPUnit 9.2 o anterior, utilice ci-phpunit-test 2.x.
NetBean
Vaya a Propiedades del proyecto > Pruebas > PHPUnit , marque la casilla Usar conjunto de pruebas personalizado y seleccione application/tests/_ci_phpunit_test/TestSuiteProvider.php
.
Consulte Registro de cambios.
codeigniter/ ├── application/ │ └── tests/ │ ├── _ci_phpunit_test/ ... don't touch! files ci-phpunit-test uses │ ├── Bootstrap.php ... bootstrap file for PHPUnit │ ├── DbTestCase.php ... DbTestCase class │ ├── TestCase.php ... TestCase class │ ├── controllers/ ... put your controller tests │ ├── libraries/ ... put your library tests │ ├── mocks/ │ │ └── libraries/ ... mock libraries │ ├── models/ ... put your model tests │ └── phpunit.xml ... config file for PHPUnit └── vendor/
Descargue la última ci-phpunit-test
desde https://github.com/kenjis/ci-phpunit-test/releases.
Descomprima y copie la carpeta application/tests
en la carpeta de su application
en el proyecto CodeIgniter.
Eso es todo.
$ cd /ruta/a/codeigniter/$ compositor requiere kenjis/ci-phpunit-test:^3.0 --dev
Y ejecuta install.php
:
$ proveedor php/kenjis/ci-phpunit-test/install.php --from-composer
El comando anterior siempre sobrescribe los archivos existentes.
Debes ejecutarlo en la carpeta raíz del proyecto CodeIgniter.
Puede especificar su application
y carpeta public
con argumentos de opción, si utiliza rutas de carpeta personalizadas.
$ php proveedor/kenjis/ci-phpunit-test/install.php -a <dir_aplicación> -p <dir_público> -t <dir_prueba_unidad>
Entonces el valor predeterminado sería:
$ php proveedor/kenjis/ci-phpunit-test/install.php -a aplicación -p público -t aplicación/pruebas
Pero algunas rutas pueden no ser correctas; en ese caso, corríjalas en tests/Bootstrap.php.
Descargue la última ci-phpunit-test
desde https://github.com/kenjis/ci-phpunit-test/releases.
Descomprima y reemplace la carpeta application/tests/_ci_phpunit_test
.
Leer registro de cambios.
$ cd /ruta/a/codeigniter/$ actualización del compositor kenjis/ci-phpunit-test
Leer registro de cambios.
Si está actualizando desde una versión anterior de ci-phpunit-test
que creó un directorio application/test/_ci_phpunit_test
y ahora desea usar ci-phpunit-test
directamente desde Composer, tiene un par de pasos adicionales:
Elimine el antiguo directorio de la biblioteca de pruebas:
$ rm -rf /ruta/a/codeigniter/aplicación/pruebas/_ci_phpunit_test
Edite el archivo application/tests/Bootstrap.php
. En la parte inferior de la sección "establecer las constantes de la ruta principal", agregue lo siguiente:
define('CI_PHPUNIT_TESTPATH', implosiona(DIRECTORY_SEPARATOR, [nombredir(APPPATH), 'proveedor', 'kenjis', 'ci-phpunit-test', 'aplicación', 'pruebas', '_ci_phpunit_test'] ).DIRECTORY_SEPARATOR);
Y reemplace cualquier referencia a __DIR__ . '/_ci_phpunit_test/
o TESTPATH . '_ci_phpunit_test
con CI_PHPUNIT_TESTPATH . '
. (Entonces, por ejemplo, __DIR__ . '/_ci_phpunit_test/CIPHPUnitTest.php'
se convertiría en CI_PHPUNIT_TESTPATH . '/CIPHPUnitTest.php'
.)
Debe instalar PHPUnit antes de ejecutar las pruebas.
Si usas Composer:
$ compositor requiere phpunit/phpunit --dev
$ cd /path/to/codeigniter/$ seller/bin/phpunit -c application/tests/PHPUnit 9.5.4 por Sebastian Bergmann y colaboradores.... 3/3 (100%)Tiempo: 00:00.102, Memoria: 12.00 MBOK (3 pruebas, 3 aserciones)Generando informe de cobertura de código en formato Clover XML... hecho [00:00.002]Generando informe de cobertura de código en formato HTML... hecho [00:00.012]
Para generar un informe de cobertura, se necesita Xdebug.
Si desea ejecutar un único archivo de caso de prueba:
$ proveedor/bin/phpunit -c aplicación/pruebas/ aplicación/pruebas/modelos/Category_model_test.php
Como ejemplo, una clase de caso de prueba para Inventory_model
sería la siguiente:
<?phpclass Inventory_model_test extiende TestCase {función pública setUp(): void{$this->resetInstance();$this->CI->load->model('Inventory_model');$this->obj = $this->CI->Inventory_model; }función pública test_get_category_list() {$esperado = [1 => 'Libro',2 => 'CD',3 => 'DVD', ];$lista = $this->obj->get_category_list();foreach ($lista como $categoría) {$this->assertEquals($esperado[$categoría->id], $categoría->nombre); } }función pública test_get_category_name() {$actual = $this->obj->get_category_name(1);$esperado = 'Libro';$this->assertEquals($esperado, $actual); } }
Como ejemplo, una clase de caso de prueba para el controlador de bienvenida sería la siguiente:
<?phpclass Welcome_test extiende TestCase {función pública test_index() {$salida = $this->request('GET', 'bienvenido/index');$this->assertStringContainsString('<title>Bienvenido a CodeIgniter</title>', $salida); } }
Consulte Cómo escribir pruebas para obtener más detalles.
Consulte Referencia de funciones y clases.
Ver Consejos.
Algunas características de ci-phpunit-test están disponibles en los siguientes paquetes independientes.
https://github.com/kenjis/phpunit-helper
https://github.com/kenjis/monkey-patch
Aplicación de prueba CodeIgniter para ci-phpunit-test
Instalador del compositor CodeIgniter
CLI para CodeIgniter 3.0
CodeIgniter Twig simple y seguro
Doctrina CodeIgniter
Implementador de CodeIgniter
Comprobador de nombres de archivos CodeIgniter3
Muestra del widget CodeIgniter (ver parcial)
Controlador de espacio de nombres CodeIgniter3