Tests unitaires et fonctionnels
Comment tester votre application Symfony
Notions théoriques
Les tests sont une partie essentielle de tout développement de logiciel. Ils vous permettent de vérifier que votre code fonctionne comme prévu, et de détecter les régressions lorsque vous modifiez votre code.
Symfony fournit des outils pour écrire à la fois des tests unitaires, qui testent des parties spécifiques de votre code en isolation, et des tests fonctionnels, qui testent le comportement de votre application dans son ensemble.
Exemple de mise en application
Pour écrire un test unitaire, vous pouvez créer une nouvelle classe dans le dossier tests/
de votre application. Par exemple, pour tester notre entité Player
, nous pourrions créer une classe PlayerTest
:
namespace App\Tests;
use App\Entity\Player;
use PHPUnit\Framework\TestCase;
class PlayerTest extends TestCase
{
public function testName(): void
{
$player = new Player();
$player->setName('Player1');
$this->assertSame('Player1', $player->getName());
}
}
Pour écrire un test fonctionnel, vous pouvez utiliser la classe WebTestCase
de Symfony, qui fournit des méthodes pour simuler des requêtes HTTP à votre application. Par exemple, pour tester notre action de création de personnage, nous pourrions créer une classe GameControllerTest
:
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class GameControllerTest extends WebTestCase
{
public function testCreateCharacter(): void
{
$client = static::createClient();
$crawler = $client->request('GET', '/game/create-character/1');
$this->assertResponseIsSuccessful();
$this->assertSelectorTextContains('h1', 'Character created!');
}
}
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Votre défi pour aujourd'hui consiste à écrire des tests pour votre application
Vous devriez écrire au moins un test unitaire pour votre entité Character
, et un test fonctionnel pour votre action de création de personnage.
Une solution
Vous devez être connecté pour voir le contenu.