J'ai du mal à comprendre ce qui ne va pas avec mes tests fonctionnels ou mes paramètres de projet: l'exécution de phpunit affiche simplement les informations suivantes (je n'imprime pas cela dans le suite de tests - c'est-à-dire qu'elle ne vient pas de l'impression client-> getResponse() ou autre chose). De plus, l'ensemble de l'exécution de test arrête immédiatement sans aucune information de résultat après ce texte est imprimé à la ligne de commande:Le test fonctionnel de Symfony2 imprime le html de redirection et arrête l'exécution du test
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="1;url=/" />
<title>Redirecting to /</title>
</head>
<body>
Redirecting to <a href="/">/</a>.
</body>
</html>
Après avoir exécuté phpunit de la ligne de commande:
phpunit -c app --group temp1 src/AppBundle/Tests/Controller/SecurityControllerTest.php
Mon code de test est plutôt simple:
class SecurityControllerTest extends WebTestCase
{
/**
* test login with succesfull case
*
* @group login
* @group temp1
*/
public function testLogin_success()
{
$client = static::createClient();
$crawler = $client->request('GET', '/');
// temp - just to test that the initial crawler location is correct
$this->assertGreaterThan(0, $crawler->filter('html:contains("System Login")')->count(), "login page not found");
$client->followRedirects(true);
$crawler = $this->loginSubmit($client, $crawler, "[email protected]", "basic_user1_password");
// THE BELOW ROWS ARE NEVER REACHED
// test that the user can access the user home
$crawler = $client->request('GET', '/user/myprofile');
$this->assertGreaterThan(0, $crawler->filter('html:contains("Welcome to your user profile")')->count(), "User homepage not accessible after login");
}
private function loginSubmit($client, $crawler, $username, $password)
{
$loginButton = $crawler->selectButton('Login');
$loginForm = $loginButton->form();
$loginForm['form[email]'] = $username;
$loginForm['form[password]'] = $password;
// BELOW IS THE ROW THAT RESULTS IN THE PRINTOUT + TEST EXECUTION STOP
return $client->submit($loginForm);
}
//....
}
En outre, le e Le même cas de test fonctionne bien sur un autre projet sur lequel je travaille donc j'ai essayé de creuser les différences dans les configurations du projet, etc. sans trop de chance.
Toute aide est grandement appréciée - n'hésitez pas à demander un autre contenu de fichier de code/configuration si cela peut être utile/pertinent.
utilisant symfony 2.3.12 & PHPUnit 4.1.0
Mis à jour: chaîne de code spécifique qui conduit à l'erreur
Alors après avoir réussi à contourner ce problème en résolvant le couple des questions de la session du projet sous-jacent d'il y a quelques jours, je suis retourné pour déboguer ce problème un peu plus loin. Et actuellement, il semble que le résultat est dû à la chaîne de code suivant, appelant d'abord en avant:
$this->forward('bundle:controller:action')->send();
et dans l'action du contrôleur transmis appelant redirect:
$this->redirect($this->generateUrl($route, $parameters))->send();
évidemment ce flux de commande semble un peu étrange en général, mais la question demeure encore pourquoi cela conduit dans le résultat observé?
les assertions viennent après le commentaire que les lignes ci-dessous ne sont jamais atteintes. Je vais ajouter ceux à la question ainsi – ejuhjav
vérifiez-vous avec le serveur web par défaut ou avec apache? –
@GaneshPatil Je l'exécute à partir de la ligne de commande avec phpunit (mis à jour la question) – ejuhjav