Symfony2 functional test with Session and Post

喜你入骨 提交于 2019-12-12 04:56:31

问题


I am trying to write some Symfony2 functional tests, using PHPUnit, that simulate a logged-in user requesting some resource via an AJAX call.

The test first simulates a user logging-in using the standard FOSUserBundle log-in form;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class MyWebTestCase extends WebTestCase {

public function login($username, $password = 'password')
{
    $client = static::createClient();
    $client->followRedirects(true);
    $crawler = $client->request('GET', '/login');

    $form = $crawler->selectButton('Login')->form(array(
        '_username' => $username,
        '_password' => $password,
    ));

    $crawler = $client->submit($form);

    return $client;
}
}

Then, the test gets an entity from the database and sets it in a session variable, then sends a POST request to retrieve the requested resource, using some JSON which includes extra information about what is being requested (in the actual application, some JavaScript composes the JSON in response to the user's actions which is then submitted via AJAX);

    $this->client = $this->login('user@domain.com', 'password');

    // we want element number 6 from the fixtures
    $chart = $this->em->getRepository('MyBundle:Element')->find(6);

    $guid = $chart->getGuid();

    $this->client->getContainer()->get('session')->set($guid, $chart);

    $link = sprintf('/viewer/data/%d/%s', 1, $guid);

    $crawler = $this->client->request('POST', $link, array(), array(),
        array('CONTENT_TYPE' => 'application/json'),
        '{"filters":[]}');

When the tests reach this point, an error is generated;

ini_set(): A session is active. You cannot change the session module's ini settings at this time

I'm using Symfony 2.6.5 and PHPUnit 4.5.0


回答1:


Do you use mock sessions for your test? If not try this.

Config_test.yml

framework:
   test: ~
   session:
      storage_id: session.storage.mock_file

The native session storage is meant to handle a single request per process which may lead to your bug. if its your case.



来源:https://stackoverflow.com/questions/29133505/symfony2-functional-test-with-session-and-post

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!