Silexアプリケーションの単体テストを作成しようとしています。単体テストクラスは次のようになります。
class PageTest extends WebTestCase {
public function createApplication() {
$app = require __DIR__ . '/../../app/app.php';
$app['debug'] = true;
$app['session.storage'] = $app->share(function() {
return new MockArraySessionStorage();
});
$app['session.test'] = true;
unset($app['exception_handler']);
return $app;
}
public function testIndex() {
$client = $this->createClient();
$client->request('GET', '/');
$this->assertTrue($client->getResponse()->isOk());
}
}
要求しようとしているサイレックスルートは次のようになります。
$app->get('/', function() use($app) {
$user = $app['session']->get('loginUser');
return $app['twig']->render('views/index.twig', array(
'user' => $user,
));
});
これにより、RuntimeExceptionが発生します。ヘッダーがすでに送信されているため、セッションの開始に失敗しました。\ Symfony \ Component \ HttpFoundation \ Session \ Storage \ NativeSessionStorage.php:142にあり、$ app['session']->getのルートからの行を含むバックトレースがあります。
NativeSessionStorageでセッションを開始する前に発生した出力は、実際にはPHPUnitの出力情報であるように見えます。これは、エラーメッセージの前に取得する唯一の出力であるためです。
PHPUnit 3.7.8 by Sebastian Bergmann.
Configuration read from (PATH)\phpunit.xml
E.......
phpunitからのこのエラー出力は、実際のテストメソッドが実行される前の出力で発生するため、少し混乱しています。私は他のテストメソッドを実行していないので、このエラーによるものである必要があります。
セッション変数を使用するサイレックスルートでPHPUnitを機能させるにはどうすればよいですか?