L'application avancée de Yii2 utilise Codeception en tant que structure de base de test primaire. Il existe déjà quelques échantillons de tests préparés dans le dossier tests
des dossiers frontend
, backend
et common
. Pour que la procédure suivante fonctionne, on suppose que l'application a été initialisée en utilisant l'environnement dev
. Dans le cas où les tests doivent être exécutés dans l'environnement production
, les fichiers yii_test
et yii_test.bat
doivent être copiés manuellement du dossier environnements/dev
vers le dossier racine du projet.
Les tests nécessitent une base de données additionnelle, qui sera vidée entre les tests. Créez une base de données yii2advanced_test
avec mysql (en accord avec la configuration dans common/config/test.php
) et exécutez :
./yii_test migrate
Construisez la suite de tests :
vendor/bin/codecept build
Ensuit, tous les échantillons de test peuvent être lancés en exécutant :
vendor/bin/codecept run
La sortie devrait ressembler à ceci :
Il est recommandé de maintenir les tests à jour. Si une classe, ou une fonctionnalité, est effacée, les tests correspondant doivent l'être également. Vous devriez exécuter les tests régulièrement, ou mieux, configurer l'intégration continue au serveur pour eux.
Reportez-vous à Étude de cas Yii2 Framework pour savoir comment configurer Codeception pour votre application.
Les tests pour les classes partagées sont situées dans common/tests
. Dans ce modèle, il s'agit unitquement de tests unitaires (unit
).
Lancez-les en exécutant :
vendor/bin/codecept run -- -c common
L'option -c
permet de définir le chemin vers la configuration codeception.yml
.
La suite de tests unitaires (unit
) (située dans common/tests/unit
) peut utiliser les fonctionnalités de Yii framework : Yii::$app
, l'enregistrement actif (ActiveRecord), les environnement prédéfinis (fixtures), etc.
Cela est effectif parce que le module Yii2
est activé dans la configuration des tests unitaires : common/tests/unit.suite.yml
. Vous pouvez le désactiver pour exécuter les tests en isolation totale.
Les tests de l'interface utilisateur contiennent des tests unitaires, fonctionnels et d'acceptation.
Exécutez-les avec :
vendor/bin/codecept run -- -c frontend
Description des suites de tests :
unit
⇒ classes relatives à l'application interface utilisateur seulement. functional
⇒ requêtes/réponses internes de l'application (sans serveur web).acceptance
⇒ application web, interface utilisateur et interactions javascript dans le navigateur réel.Les tests d'acceptation sont désactivés par défaut. Pour les utiliser exécutez ce qui suit.
Pour exécuter les tests d'acceptation suivez les étapes ci-dessous :
Renommez frontend/tests/acceptance.suite.yml.example
en frontend/tests/acceptance.suite.yml
pour activer la configuration de la suite
Remplacez le paquet codeception/base
dans composer.json
par codeception/codeception
pour installer une version complète de Codeception
Mettez les dépendances à jour avec Composer
composer update
Auto-générez les nouvelles classes pour la prise en charge des tests d'acceptation :
vendor/bin/codecept build -- -c frontend
Téléchargez Selenium Server et lancez-le :
java -jar ~/selenium-server-standalone-x.xx.x.jar
Démarrez le serveur Web :
php -S 127.0.0.1:8080 -t frontend/web
Maintenant, vous pouvez exécuter tous les tests disponibles :
vendor/bin/codecept run acceptance -- -c frontend
L'application interface d'administration contient les suites de tests unitaires et fonctionnels. Exécutez-les avec :
vendor/bin/codecept run -- -c backend