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
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?
êtes-vous que votre demande au bon port? – DevDonkey
@DevDonkey Oui, la requête est correcte. – Francesco
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