0

REST API のテストをセットアップしようとしていますが、リクエスト オブジェクト内にセッション変数を設定する必要があります。通常の方法ではうまくいかないようです。

$session = $request->getSession();              
$session->set('my_session_variable', 'myvar');
4

3 に答える 3

1

WebTestCase を使用すると、「セッション」サービスを取得できます。このサービスでは、次のことができます。

  • セッションを開始し、
  • セッションにいくつかのパラメーターを設定し、
  • セッションを保存し、
  • sessionId を含む Cookie をリクエストに渡します

コードは次のようになります。

use Symfony\Component\BrowserKit\Cookie;
....
....
public function testARequestWithSession()
{
    $client = static::createClient();
    $session = $client->getContainer()->get('session');
    $session->start(); // optional because the ->set() method do the start
    $session->set('my_session_variable', 'myvar'); // the session is started  here if you do not use the ->start() method
    $session->save(); // important if you want to persist the params
    $client->getCookieJar()->set(new Cookie($session->getName(), $session->getId()));  // important if you want that the request retrieve the session

    $client->request( .... ...
于 2017-09-25T13:06:15.727 に答える
1

WebTestCaseを使用する必要があります

次に、同様の質問に対する回答で説明されていることを行うことができます: how-can-i-persist-data-with-symfony2s-session-service-during-a-functional-test

次のようなもの:

$client = static::createClient();
$container = $client->getContainer();
$session = $container->get('session');
$session->set('name', 'Sensorario');
$session->save();
于 2012-07-17T07:59:07.207 に答える
-1

セッションで値を設定するための短いスニペット

$session = $this->client->getRequest()->getSession();
$session->set('name', 'Sensorario');

そして、この値を取得するための非常に単純な例

echo $session->get('name');
于 2012-07-17T00:32:45.940 に答える