Dans un test de fonctionnalités de Laravel, j'essaie de stocker une variable dans une session afin de pouvoir l'utiliser dans le reste de mes tests, comme suit:Stockage et récupération des variables de session dans les tests d'unité/fonctionnalité dans Laravel
public function testLogin()
{
$response = $this->json('POST', '/login', $myCredentials);
$response
->assertStatus(200)
->assertJson([
'token' => true
]);
session(['token' => $response['token']]);
}
Quand je lance "phpunit" dans la ligne de commande, je reçois cette erreur:
PHP Fatal error: Uncaught ReflectionException: Class session does not exist in /vendor/laravel/framework/src/Illuminate/Container/Container.php:752
Apparemment, l'aide globale "session()" ne fonctionne pas dans les classes de test. J'ai également essayé de travailler directement avec la classe en utilisant "Illuminate \ Session" ou juste "\ Session", mais tous deux retournés dans les erreurs "not found". Comment puis-je stocker et récupérer des variables de session dans des classes de test?
Ce que je suis en train de faire est d'obtenir une variable jeton de ma première demande, puis enregistrez-le et l'utiliser sur plusieurs méthodes dans plusieurs classes. Je ne sais pas comment je pourrais accomplir cela avec la méthode withSession(), car ce dont j'ai besoin présenterait un problème récursif: "$ this-> withSession (['token' => session ('token')]". est-ce que je dois juste récupérer le jeton sur chaque classe? J'essaie d'éviter les requêtes HTTP inutiles – americanknight
Je suppose que je pourrais l'obtenir une fois dans une classe de test maître, puis l'étendre aux autres classes. J'ai besoin de compter sur des sessions – americanknight
Dans la plupart des cas, je fais la même chose et fais une classe master pour toutes les initialisations ... – Stony