Avant d’écrire les tests
S’assurer que phpunit fonctionne avec la commande phpunit --version
par exemple.
Lancer les tests avec la commande phpunit -c app/
et ajouter --coverage-html ~/report
pour avoir la couverture de code. (si la couverture de code ne fonctionne pas c’est peut être parce que xdebug n’est pas utilisé).
Le répertoire report
contiendra la couverture de code.
Phpunit s’appuie sur le fichier app/phpunit.xml.dist
qui permet de spécifier des options, mais surtout dans la balise <testsuites>
les répertoires où sont situés les tests ainsi que dans la balise <filter>
les répertoires à couvrir pour la couverture de code (et dans <exclude
> ceux à exclure).
On peut aussi dans la balise <php>
fournir des variables spéciales comme par exemple le remote_addr : <php><server name="REMOTE_ADDR" value="localhost" /></php>
L’écriture des tests
Les tests sont dans le dossier /tests
dans l’installation standard de symfony.
Rien de bien particulier et tout se trouve sur la page http://symfony.com/fr/doc/current/book/testing.html
Pour une authentification HTTP basic
Il suffit d’envoyer un header autorization dans la requête et on préfixe avec http_ comme il s’agit d’un header, ce qui donne :
$aAuth = array(
'HTTP_AUTHORIZATION' => 'Basic QWxhZGRpbjpvcGVuIHNlc2',
);
$crawler = $this->client->request('GET', '/getMonInfo', array(), array(), $aAuth);
Envoyer des données dans le content
$data = array(
"id-info" => 96,
"id-project" => 1,
"version" => "1.0.0",
);
$crawler = $this->client->request('GET', '/getMonInfo', array(), array(), $aAuth, json_encode($data));
Assertion égale à deux valeurs possibles
L’assertion d’égalité permet de tester si une valeur correspond à une valeur attendue. Mais si la valeur attendu à 2 possibilités correctes alors on peut utiliser assertThat
et logicalOr
. Ici on a deux valeurs toto et tata qui sont correctes.
$respondOk1 = 'toto';
$respondOk2 = 'tata';
$content = $this->client->getResponse()->getContent();
$this->assertThat(
$content,
$this->logicalOr(
$this->equalTo($respondOk1),
$this->equalTo($respondOk2)
)
);