Skip to content
Snippets Groups Projects
Commit 89fa0608 authored by PIERRON Laurent's avatar PIERRON Laurent :man_in_tuxedo_tone1:
Browse files

adding TP codeception

parent ebe1de9f
Branches
No related tags found
No related merge requests found
---
marp: true
style: |
.columns {
display: grid;
grid-template:
"a b b";
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
}
.columns-left {
background: green;
}
.columns-right {
background: beige;
}
---
# TP CodeCeption
**Source** : https://codeception.com/docs/GettingStarted
(Codeception](https://codeception.com) est un framework de tests pour envirnonnements de dévloppements PHP : Symfony, Laravel, etc.
Il fournit les outils pour développer des tests : unitaires, fonctionnels, d'intégration et d'acceptation (définis par le client dans le cahier des charges).
## Trois types de tests
- Unit : teste une classe PHP
- Functional : teste un ensemble de classes PHP
- Acceptance : teste l'application Web finale comme un utilisateur
---
# Prérequis projet `PasteBin`
1. Installer le logiciel [PrivateBin](https://github.com/PrivateBin/PrivateBin) with `git clone git clone https://github.com/PrivateBin/PrivateBin`
1. Installation des dépendances : `composer update`
1. Démarrer le serveur : `php -S localhost:8000`
1. Tester en ouvrant la page : http://localhost:80001.
1. Retirer `phpunit` à cause d'un conflit : `composer remove 'phpunit/phpunit'`
---
# Installation de codeception
Source : https://codeception.com/quickstart
1. `composer require "codeception/codeception" --dev`
1. `php vendor/bin/codecept bootstrap`
Vous pouvez également installer l'extension `Codeception` pour votre IDE si elle existe.
---
# Création du premier test
Un premier test d'acceptation, créé automatqiuement dans `tests/Acceptance/SigninCest.php`
1. `php vendor/bin/codecept generate:cest Acceptance Signin`
---
# Modification du premier test
<div class="columns">
<div class="columns-left">
## Test en *Langage Laturel*
```
I amOnPage '/login'
I fillField 'email','john_doe@gmail.com''
I fillField 'password','123456'
I click 'Login'
```
</div>
<div class="columns-right">
## Test en *Codeception PHP*
```PHP
namespace Tests\Acceptance;
use \Tests\Support\AcceptanceTester;
class SigninCest
{
public function signInSuccessfully(AcceptanceTester $I)
{
$I->amOnPage('/login');
$I->fillField('email', 'john_doe@gmail.com');
$I->fillField('password', '123456');
$I->click('Login');
}
}
```
</div>
</div>
----
# Lancement du test
Configurer le lancement des tests d'acceptation, en indiquant l'URL de votre application : `tests/Acceptance.suite.yml`
```
actor: AcceptanceTester
modules:
enabled:
- PhpBrowser:
url: http://localhost:8000/
```
Lancer le test avec la commande `run`: `php vendor/bin/codecept run --steps`
Modifier le test pour valider le lancement de `PasteBin`.
----
Suite sur Codeception :
- Développemnt guidé par le *comportement* : https://codeception.com/docs/BDD
- Tests avec des objets *bidons* : https://codeception.com/docs/UnitTests#Mocks
- Tests d'intégration : https://codeception.com/docs/UnitTests#Integration-Tests
- Tests de base de données : https://codeception.com/docs/UnitTests#Testing-Database
----
# Mise en oeuvre sur un autre exemple
Source : https://github.com/Codeception/laravel-module-tests
```
git clone https://github.com/Codeception/laravel-module-tests.git goodcode
cd goodcode
composer update
cp .env.testing .env
touch database/database.sqlite
php artisan migrate --seed
vendor/bin/codecept run Functional
php artisan serve
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment