phpunitの実行では、機能テストやプロジェクト設定が間違っていることを理解するのに苦労しています。テストスイート - つまり、クライアントからのgetResponse()の印刷などではありません。Symfony2の機能テストは、リダイレクトhtmlを出力してテストの実行を停止します。
phpunit -c app --group temp1 src/AppBundle/Tests/Controller/SecurityControllerTest.php
私のテストコード:コマンドラインからのPHPUnitを実行した後
<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>
:このテキストは、コマンドラインにプリントアウトされた後、さらに全体のテストの実行には、任意の結果情報なしですぐに停止しむしろ単純です:
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);
}
//....
}
さらに、e xactly同じテストケースが私が作業している別のプロジェクトでうまく動作しているので、私はプロジェクトの設定などの違いを幸運にも掘り下げようとしています。
お手数ですが、参考になる場合は、他のコード/設定ファイルの内容をお気軽にお問い合わせください。特定のコード・チェーン
だから、基本的なプロジェクトセッションの問題のカップルを解くことによって、この問題を回避するために管理した後にエラーにつながる:4.1.0
が更新のsymfony 2.3.12 &のPHPUnitを使用して
数日前、私はこの問題をさらに少しデバッグするために戻った。明らかにこのコントローラの流れは少し奇妙に思える
$this->redirect($this->generateUrl($route, $parameters))->send();
:
$this->forward('bundle:controller:action')->send();
とリダイレクト呼び出し転送コントローラのアクションで:そして現在、最初に前方の呼び出し、結果が原因次のコード・チェーンにあるようです一般的には、これは観察された結果につながるのはなぜですか?
アサーションは、行の下に到達しないというコメントの後に来ます。私も質問にそれらを追加します – ejuhjav
あなたはデフォルトのWebサーバーまたはApacheでチェックしていますか? –
@GaneshPatil私はこれをphpunitコマンドラインから実行しています(質問を更新しました) – ejuhjav