Index de l'article

Tests PhpUnit

Si phpunit-bridge, browser-kit et css-selector sont installés, on peut créer des tests fonctionnels (merci à dev-web.io).

1) Créez un premier test vide :

php bin/console make:functional-test

2) Décommentez la mention des sessions dans config / packages / test / framework.yaml :

framework:
test: ~
# Uncomment this section if you're using sessions
session:
storage_id: session.storage.mock_file

3) Ajoutez cette ligne dans le fichier phpunit.xml.dist :

Vous pouvez utiliser la même base de données ou une autre dédiée.

 

<!-- define your env variables for the test env here -->
<env name="DATABASE_URL" value="mysql://root:@127.0.0.1/userDemo" />

4) Modifiez ensuite la fonction par défaut de votre contrôleur de test.

Nous reprenons ici l'exemple précédent de l'annuaire utilisateur, et vérifions qu’un message d’erreur s’affiche bien lorsque l’utilisateur s’inscrit en ne saisissant pas les 2 mêmes mot de passe :

public function testCheckPassword(){
$client = static::createClient();

$crawler = $client->request(
'GET',
'/register'
);

$form = $crawler->selectButton('S\'inscrire')->form();

$form['user[email]'] = Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.';
$form['user[username]'] = 'usernametest';
$form['user[fullName]'] = 'John Doe';
$form['user[password][first]'] = 'pass1';
$form['user[password][second]'] = 'pass2';

$crawler = $client->submit($form);

//echo $client->getResponse()->getContent();

$this->assertEquals(1,
$crawler->filter('li:contains("This value is not valid.")')->count()
);
}

5) Lancez ensuite le test :

php bin/phpunit