Sto faticando a capire cosa c'è di sbagliato nel mio test funzionale o nelle impostazioni del progetto: l'esecuzione di phpunit stampa solo le seguenti informazioni (non lo sto stampando nel test suite - cioè non proviene dalla stampa client-> getResponse() o altro). Inoltre l'intera esecuzione del test si arresta immediatamente senza alcuna informazione risultato dopo questo testo viene stampato alla riga di comando:Il test funzionale Symfony2 stampa redirect html e interrompe l'esecuzione del 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>
Dopo l'esecuzione phpunit da linea di comando:
phpunit -c app --group temp1 src/AppBundle/Tests/Controller/SecurityControllerTest.php
Il mio codice di prova è piuttosto semplice:
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);
}
//....
}
Inoltre la e Lo stesso identico caso di test sta funzionando bene su un altro progetto su cui sto lavorando, quindi ho cercato di scavare le differenze nelle configurazioni del progetto, ecc. senza fortuna.
Qualsiasi aiuto è molto apprezzato: non esitate a chiedere altri contenuti del file di configurazione/codice se ciò potrebbe essere utile/pertinente.
utilizzando symfony 2.3.12 & phpunit 4.1.0
aggiornamento: catena di codice specifico che porta all'errore
Così dopo essere riuscito a risolvere questo problema risolvendo il progetto sottostante problemi di sessione paio di giorni fa, sono tornato a eseguire il debug di questo problema ancora un po 'oltre. E attualmente sembra che il risultato è dovuto al seguente catena di codice, prima di chiamare in avanti:
$this->forward('bundle:controller:action')->send();
e nell'azione di controllo inoltrato chiamando redirect:
$this->redirect($this->generateUrl($route, $parameters))->send();
ovviamente questo flusso di controllo sembra un po 'strano in generale, ma rimane ancora la domanda perché questo porta al risultato osservato?
le affermazioni vengono dopo il commento che le righe inferiori non vengono mai raggiunte. Aggiungerò anche quelli alla domanda – ejuhjav
stai verificando con il server web predefinito o con apache? –
@GaneshPatil Sto eseguendo questo da dalla riga di comando con phpunit (aggiornato la domanda) – ejuhjav