2016-03-31 1 views
6

J'ai suivi le Symfony documentation sur les tests fonctionnels afin d'écrire mon premier, mais j'ai quelques problèmes. La réponse que je reçois via le navigateur fonctionne bien:Le test fonctionnel Symfony échoue mais la même requête fonctionne dans le navigateur

Browser response

Mais quand je lance phpunit -c app/ dans la coquille je reçois un échec.

1) AppBundle \ Tests \ Controller \ MeterAPIControllerTest :: testGetAllVariables Failed affirmant que 500 matchs attendus 200.

Voici le code:

<?php 

namespace AppBundle\Tests\Controller; 

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class MeterAPIControllerTest extends WebTestCase 
{ 
    public function testGetAllVariables() 
    { 
     $client = static::createClient(); 
     $crawler = $client->request(
      'GET', 
      '/meters/121/120/variables' 
     ); 

     // Assert a specific 200 status code 
     $this->assertEquals(200, $client->getResponse()->getStatusCode()); 
    } 
} 

Si je tente un autre assertion de test, j'obtiens l'échec aussi.

// Assert that the "Content-Type" header is "application/json" 
$this->assertTrue(
    $client->getResponse()->headers->contains(
     'Content-Type', 
     'application/json' 
    ) 
); 

EDIT

Quand je lance phpunit dans app/logs/test.log je reçois une exception PHP:

[31/03/2016 15:25:21] request.CRITICAL: Uncaught PHP Exception Doctrine \ Common \ Persistance \ Mapping \ MappingException: "Mappage non valide 'AppBundle.Entity.EM2Meter.orm.yml' pour la classe 'AppBundle \ Entity \ EM2Meter'." à /Applications/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/libre/Doctrine/Common/Persistence/Mapping/MappingException.php ligne 86 {"exception": "[objet] (Doctrine \ Common \ Persistance \ Mapping \ MappingException (code: 0): Fichier de mappage non valide 'AppBundle.Entity.EM2Meter.orm.yml' pour la classe 'AppBundle \ Entity \ EM2Meter' à /Applications/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/commune/persistance/cartographie/MappingException.php: 86) "} []

Comment puis-je résoudre ce problème?

+2

êtes-vous que votre demande au bon port? – DevDonkey

+0

@DevDonkey Oui, la requête est correcte. – Francesco

+1

en êtes-vous sûr? Je pense que vous trouverez que, sauf si vous spécifiez lorsque vous instanciez un nouveau client, il sera par défaut le port 80. – DevDonkey

Répondre

1

Vous ne l'avez pas dit au client symfony de contacter le serveur localhost sur le port 8000, son défaut encore 80.

Lorsque vous instanciez votre client, spécifiez l'hôte comme celui-ci.

$client = static::createClient([], [ 
    'HTTP_HOST' => 'localhost:8000', 
]); 
+0

Merci, mais malheureusement, cela ne résout pas le problème. – Francesco

+0

que disent les journaux du serveur? – DevDonkey

+0

J'ai mis à jour la question. – Francesco

0

Il semble qu'il y ait un problème de cache ici. Je pense qu'il est une bonne pratique pour nettoyer le cache pour l'environnement en cours avant l'exécution des tests et avant de lancer votre projet pour les tests fonctionnels:

$ php bin/console cache:clear --env=dev

$ php bin/console cache:clear --env=tests