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