IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ SymfonyConsultez toutes les FAQ

Nombre d'auteurs : 17, nombre de questions : 81, dernière mise à jour : 18 juin 2017  Ajouter une question

 

Les questions redondantes se multipliant sur le forum Symfony, nous avons choisi de créer cette FAQ afin de regrouper les questions qui sont posées fréquemment.

Vos remarques et idées sont les bienvenues. Et pourquoi pas votre aide ! S'il vous prend l'envie de tailler votre plus belle plume et de retrousser vos manches, il y a de quoi faire !

SommaireSymfony 3Exécution des tests (5)
précédent sommaire suivant
 

Symfony s'interface nativement avec PHPUnit pour effectuer les tests unitaires.
Sur Symfony 3, il est recommandé d'utiliser la dernière version stable de PHPUnit, la version 4.2

Mis à jour le 16 décembre 2015 Siguillaume

Un test unitaire consiste à tester une classe unique dans votre application Web, basée sur Symfony.
La classe est désignée par le terme « unité ».

Mis à jour le 16 décembre 2015 Siguillaume

Cet exemple porte sur le test de la classe Calculator, situé dans le répertoire src/AppBundle/Util/.

Le code source de la classe Calculator est :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
 
// src/AppBundle/Util/Calculator.php 
namespace AppBundle\Util; 
 
class Calculator 
{ 
    public function add($a, $b) 
    { 
        return $a + $b; 
    } 
}
Pour effectuer un test sur cette classe, il faut créer une nouvelle classe CalculatorTest, dans un fichier CalculatorTest.php à créer dans le répertoire tests/AppBundle/Util.
Le code source de la classe CalculatorTest doit être :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
// tests/AppBundle/Util/CalculatorTest.php 
namespace Tests\AppBundle\Util; 
 
use AppBundle\Util\Calculator; 
 
class CalculatorTest extends \PHPUnit_Framework_TestCase 
{ 
    public function testAdd() 
    { 
        $calc = new Calculator(); 
        $result = $calc->add(30, 12); 
 
        // assert that your calculator added the numbers correctly! 
        $this->assertEquals(42, $result); 
    } 
}
Par convention, le répertoire Tests/AppBundle doit correspondre au répertoire des sources de vos classes.
Par exemple, si vous avez une classe dans b]src/AppBundle/Util/[/b], la classe de test correspondante doit être dans b]Tests/AppBundle/Util/[/b].

Mis à jour le 16 décembre 2015 Siguillaume

Les tests fonctionnels portent sur les vérifications des différentes couches de votre application, depuis le routage, jusqu'aux vues.
Du point de vue de PHPUnit, ils ne sont pas vraiment différents des tests unitaires, mais ils utilisent un workflow (flux de travail) différent :

  1. Faire une requête ;
  2. Tester la response ;
  3. Cliquer sur un lien ou soumettre un formulaire ;
  4. Tester la response ;
  5. Corriger et répéter.

Mis à jour le 16 décembre 2015 Siguillaume

Les tests fonctionnels sont de simples fichiers PHP à stocker dans le répertoire tests/AppBundle/Controller de votre bundle.
Par exemple, si vous voulez exécuter un test fonctionnel sur la classe PostController, il faut créer un nouveau fichier PostControllerTest.php.
La classe à créer est un extends de la classe spéciale WebTestCase :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
// tests/AppBundle/Controller/PostControllerTest.php 
namespace Tests\AppBundle\Controller; 
 
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 
 
class PostControllerTest extends WebTestCase 
{ 
    public function testShowPost() 
    { 
        $client = static::createClient(); 
 
        $crawler = $client->request('GET', '/post/hello-world'); 
 
        $this->assertGreaterThan( 
            0, 
            $crawler->filter('html:contains("Hello World")')->count() 
        ); 
    } 
}
Pour exécuter le test fonctionnel, la classe WebTestCase fait un bootstrap sur le noyau de votre application.

Mis à jour le 16 décembre 2015 Siguillaume

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2021 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.