PHPUnit
Dépendance à PHPUnit (qui devrait déjà être installé) :
$ composer require --dev symfony/phpunit-bridge
Ecrire les tests
Par convention, on utilisera le répertoire Test et on reprendra l'arborescence de src.
On va chercher à transformer le contenu json obtenu par l'API en données utilisables pour les champs.
<?php namespace Tests\Entity; use Entity\Profile; class ProfileTest extends \PHPUnit_Framework_TestCase { public function testConstruct() { $data = '{"battleTag":"test#1234","kills":{"elites": 355272}}'; $profile = new Profile($data); self::assertEquals($profile->getBattleTag(), "test#1234"); self::assertEquals($profile->getElitesKilled(), 355272); } } ?>
Ecrire un test
Il ne reste plus qu'à écrire le code correspondant dans la classe Profile
/** * Profile constructor. * @param $jsonData string containing profile data in json format */ public function __construct($jsonData=null) { $encoder = new JsonEncoder(); $data = $encoder->decode($jsonData, 'json'); $this->setBattleTag($data["battleTag"]); }
Lancer le test
Il suffit de configurer PHPUnit, avec par exemple le fichier phpunit.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- https://phpunit.de/manual/current/en/appendixes.configuration.html --> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.1/phpunit.xsd" backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" > <php> <ini name="error_reporting" value="-1" /> <env name="KERNEL_CLASS" value="App\Kernel" /> <env name="APP_ENV" value="test" /> <env name="APP_DEBUG" value="1" /> <env name="APP_SECRET" value="s$cretf0rt3st" /> <env name="SHELL_VERBOSITY" value="-1" /> <!-- define your env variables for the test env here --> </php> <testsuites> <testsuite name="Project Test Suite"> <directory>tests/</directory> </testsuite> </testsuites> <filter> <whitelist> <directory>./src/</directory> </whitelist> </filter> <listeners> <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" /> </listeners> </phpunit>Appel simple à l'utilitaire PHPUnit qui va lancer l'ensemble des jeux de test.
$ ./bin/phpunit tests/Entity/ProfileTest.php