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