Bonjour à tous,
J'essaie depuis peu de me mettre au Test Driven Development avec Symfony. Jusque là dans mon projet tout allait bien, j'ai pu travailler sur le modèle de données, les différents services de mon projet et je suis en train de finir ce dernier par les controleurs, cependant c'est là ce que cela coince.
Mon test le plus basic vérifie une redirection 301 (l'ensemble du projet sera en HTTPS donc je test le basculement sur ce canal). Ensuite il vérifie un code HTTP 200 et l'existence d'un bouton dans le contenu de la page. Cependant mon test échoue lors de la deuxième assertions.
Coté controlleur, le code n'est pas très complexe, mais initie une session PHP et c'est ca qui fait planter mon test, le serveur retourne un code 500 au lieu de 200 avec un message "headers already sent by output...".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public function testIndexAction() { $client = static::createClient(); $client->request('GET', '/'); $this->assertEquals(301, $client->getResponse()->getStatusCode()); $crawler = $client->followRedirect(); $this->assertEquals(200, $client->getResponse()->getStatusCode()); $this->assertContains('Faire une nouvelle commande', $crawler->filter('.btn-centered')->text()); }
Ma question est de deux ordres:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /** * @Route("/{_locale}", requirements={"_locale" = "fr|en"}, defaults={"_locale" = "fr"}, name="homepage") */ public function indexAction(Request $request,$_locale) { $request->setLocale($_locale); $session = new Session(); if($session->has('app')){ $session->remove('app'); } return $this->render('steps/welcomeStep.html.twig'); }
- Premièrement comment faire en sorte que mon controlleur puisse utiliser les sessions dans l'environnement de test sans problème
- Deuxièmement, lors de futur tests où j'aurai besoin d'éléments en session, comment les mettre en place pour que l'action du contrôleur puisse les voir et les utiliser.
Je n'ai vraiment trouvé que peu d'infos là dessus et même la doc symfony ne me parait pas claire (https://symfony.com/doc/current/comp...n_testing.html). N'arrivant vraiment pas à comprendre que faire pour que cela fonctionne je souhaiterai un petit coup de pouce
Pour info, mon config_test.yml est configuré par défaut concernant les sessions
Je vous remercie d'avance pour tout élément apporté pour éclairer ma lanterne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 imports: - { resource: config_dev.yml } framework: test: ~ session: storage_id: session.storage.mock_file profiler: collect: false
Partager