Avertissement
La mise à niveau vers CodeIgniter4 est fortement recommandée.
Un moyen plus simple d'utiliser PHPUnit avec CodeIgniter 3.x.
Vous n'avez pas du tout besoin de modifier les fichiers principaux de CodeIgniter.
Vous pouvez facilement écrire des tests de contrôleur.
Rien n’est intestable, peut-être.
Bien documenté.
PHP 7.3 ou version ultérieure
Si vous utilisez Monkey Patching, vous devez utiliser PHP-Parser 4.2 ou version ultérieure en tant que dépendance de Composer.
CodeIgniter 3.x
Si vous souhaitez passer à CodeIgniter4, voir #361.
PHPUnit 9.3 ou version ultérieure
Si vous souhaitez utiliser PHPUnit 9.2 ou une version antérieure, veuillez utiliser ci-phpunit-test 2.x.
NetBeans
Accédez à Propriétés du projet > Tests > PHPUnit , cochez la case Utiliser la suite de tests personnalisés et sélectionnez application/tests/_ci_phpunit_test/TestSuiteProvider.php
.
Voir Journal des modifications.
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/
Téléchargez le dernier ci-phpunit-test
depuis https://github.com/kenjis/ci-phpunit-test/releases.
Décompressez et copiez le dossier application/tests
dans votre dossier application
dans le projet CodeIgniter.
C'est ça.
$ cd /chemin/vers/codeigniter/$ composer nécessite kenjis/ci-phpunit-test:^3.0 --dev
Et exécutez install.php
:
$ php vendeur/kenjis/ci-phpunit-test/install.php --from-composer
La commande ci-dessus écrase toujours les fichiers existants.
Vous devez l'exécuter dans le dossier racine du projet CodeIgniter.
Vous pouvez spécifier votre application
et votre dossier public
avec des arguments d'option, si vous utilisez des chemins de dossier personnalisés.
$ php supplier/kenjis/ci-phpunit-test/install.php -a <rép_application> -p <rép_public> -t <rép_unité>
La valeur par défaut serait donc :
$ php supplier/kenjis/ci-phpunit-test/install.php -a application -p public -t application/tests
Mais certains chemins peuvent ne pas être corrects, dans ce cas, veuillez les corriger dans tests/Bootstrap.php.
Téléchargez le dernier ci-phpunit-test
depuis https://github.com/kenjis/ci-phpunit-test/releases.
Décompressez et remplacez le dossier application/tests/_ci_phpunit_test
.
Lisez le journal des modifications.
$ cd /path/to/codeigniter/$ composer update kenjis/ci-phpunit-test
Lisez le journal des modifications.
Si vous effectuez une mise à niveau à partir d'une version précédente de ci-phpunit-test
qui a créé un répertoire application/test/_ci_phpunit_test
et que vous souhaitez maintenant utiliser directement ci-phpunit-test
depuis Composer, vous devez suivre quelques étapes supplémentaires :
Supprimez l'ancien répertoire de la bibliothèque de tests :
$ rm -rf /chemin/vers/codeigniter/application/tests/_ci_phpunit_test
Modifiez le fichier application/tests/Bootstrap.php
. Au bas de la section « Définir les constantes du chemin principal », ajoutez ce qui suit :
définir('CI_PHPUNIT_TESTPATH', imploser(DIRECTORY_SEPARATOR, [dirname(APPPATH), 'fournisseur', 'kenjis', 'ci-phpunit-test', 'application', 'tests', '_ci_phpunit_test'] ).DIRECTORY_SEPARATOR);
Et remplacez toutes les références à __DIR__ . '/_ci_phpunit_test/
ou TESTPATH . '_ci_phpunit_test
avec CI_PHPUNIT_TESTPATH . '
. (Ainsi, par exemple, __DIR__ . '/_ci_phpunit_test/CIPHPUnitTest.php'
deviendrait CI_PHPUNIT_TESTPATH . '/CIPHPUnitTest.php'
.)
Vous devez installer PHPUnit avant d'exécuter des tests.
Si vous utilisez Composer :
$ composer nécessite phpunit/phpunit --dev
$ cd /path/to/codeigniter/$ seller/bin/phpunit -c application/tests/PHPUnit 9.5.4 par Sebastian Bergmann et contributeurs.... 3/3 (100%)Heure : 00:00.102, Mémoire : 12.00 MBOK (3 tests, 3 assertions)Génération du rapport de couverture de code au format Clover XML ... terminé [00:00.002]Génération du rapport de couverture de code au format HTML ... terminé [00:00.012]
Pour générer un rapport de couverture, Xdebug est nécessaire.
Si vous souhaitez exécuter un seul fichier de scénario de test :
$ vendeur/bin/phpunit -c application/tests/application/tests/models/Category_model_test.php
À titre d'exemple, une classe de scénario de test pour Inventory_model
serait la suivante :
<?phpclass Inventory_model_test étend TestCase {public function setUp() : void{$this->resetInstance();$this->CI->load->model('Inventory_model');$this->obj = $this->CI->Inventory_model; }fonction publique test_get_category_list() {$expected = [1 => 'Livre',2 => 'CD',3 => 'DVD', ];$list = $this->obj->get_category_list();foreach ($list as $category) {$this->assertEquals($expected[$category->id], $category->name); } }fonction publique test_get_category_name() {$actual = $this->obj->get_category_name(1);$expected = 'Book';$this->assertEquals($expected, $actual); } }
À titre d'exemple, une classe de scénario de test pour le contrôleur Welcome serait la suivante :
<?phpclass Welcome_test étend TestCase {fonction publique test_index() {$output = $this->request('GET', 'welcome/index');$this->assertStringContainsString('<title>Bienvenue dans CodeIgniter</title>', $output); } }
Voir Comment écrire des tests pour plus de détails.
Voir Référence des fonctions et des classes.
Voir Conseils.
Certaines fonctionnalités de ci-phpunit-test sont disponibles dans les packages autonomes suivants.
https://github.com/kenjis/phpunit-helper
https://github.com/kenjis/monkey-patch
Application de test CodeIgniter pour ci-phpunit-test
Programme d'installation du compositeur CodeIgniter
CLI pour CodeIgniter 3.0
CodeIgniter Brindille simple et sécurisée
Doctrine CodeIgniter
Déployeur CodeIgniter
Vérificateur de nom de fichier CodeIgniter3
Exemple de widget CodeIgniter (affichage partiel)
Contrôleur avec espace de noms CodeIgniter3