フォームを前処理して最終的に保存するサービスをテストしようとしています。そのフォームの作成中:Symfony3-authenticated with Testサービス
フィールドのデフォルト値として現在ログインしているユーザーを取得するために呼び出されます。
private $pages;
private $formFactory;
protected function setUp()
{
self::bootKernel();
$client = self::$kernel->getContainer()->get('test.client');
$client->setServerParameters([
'HTTP_HOST' => 'ajax.localhost.dev:10190',
'CONTENT_TYPE' => 'application/json',
'HTTP_X-Requested-With' => 'XMLHttpRequest',
'HTTP_USER_AGENT' => 'Symfony/2.0',
'PHP_AUTH_USER' => 'root',
'PHP_AUTH_PW' => '[email protected]'
]);
$this->pages = self::$kernel->getContainer()->get('app.pages');
$this->formFactory = self::$kernel->getContainer()->get('form.factory');
}
public function testNewPage() {
$page = new Page();
//shortened
$form = $this->formFactory->create(PageType::class, $page);
}
しかし、それは私にエラーを与える:
は、今のところ私はこの(Symfony\Bundle\FrameworkBundle\Test\WebTestCase
を拡張)を有する午前はセキュリティトークンが存在しないことを示して何
Call to a member function getUser() on null
。
どうすればいいですか?私は運で、そのコードを試してみました@LBAのコメントへの
UPDATE
ありがとう:
$session = self::$kernel->getContainer()->get('session');
$token = new UsernamePasswordToken('root', 'root', 'main', ['ROLE_USER', 'ROLE_ROOT']);
$session->set('_security_main', serialize($token));
$session->save();
一部説明hereとしてクッキーを設定して$kernel
を有しているので、不足していますいいえメソッドgetCookieJar()
setUpの後にログインしたユーザーがいることを確認してください。 – LBA
@LBA最新のコードをご覧ください。私はオプション配列を 'bootKernel()'に渡すことで間違っていました。しかし、それも働いていません。 – philipp
まだユーザーのログイン方法がわかりません。アプリケーションでログインはどのように行われますか?あなたはサーバーパラメータ/ヘッダーとして各要求でユーザー名とパスワードを送信していませんか? – LBA