我正在嘗試爲我的REST API設置一些測試,並且需要在請求對象內部設置一個會話變量。通常的方法似乎不起作用。Symfony 2 - 在單元測試期間向請求對象添加會話數據
$session = $request->getSession();
$session->set('my_session_variable', 'myvar');
我正在嘗試爲我的REST API設置一些測試,並且需要在請求對象內部設置一個會話變量。通常的方法似乎不起作用。Symfony 2 - 在單元測試期間向請求對象添加會話數據
$session = $request->getSession();
$session->set('my_session_variable', 'myvar');
短的片段來設置會話
$session = $this->getRequest()->getSession();
$session->set('name', 'Sensorario');
某個值,並且非常非常簡單的例子來得到這個值
echo $session->get('name');
您應該使用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();
如果使用WebTestCase,您可以檢索 「會話」 的服務。 有了這項服務,您可以:
該代碼可以是以下代碼:
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(.... ...
不起作用...我必須手動創建請求變量,因爲它來自CLI – greg 2012-07-17 00:36:08
測試中沒有$ this-> getRequest()。在執行任何請求之前,$ this - > $ client-> getRequest()在null中。所以,它不會工作 – 2017-10-02 13:14:17