Gar*_*eld 5 php phpunit symfony
我使用的是 symfony 5.4
我不明白 symfony 真正需要什么来纠正这个弃用:
从 symfony/security-csrf 5.3 开始:在没有会话的情况下使用“Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage”没有效果,已被弃用。它将在 Symfony 6.0 1x 中从 App\Tests\Controller 的 MeansCablesControllerTest::TestDatagridAdd 中抛出“Symfony\Component\HttpFoundation\Exception\SessionNotFoundException”
我在测试/控制器/MeansBenchesControllerTest.php(WebTestCase)中的函数:
function datagridAddUpdate($controllerName, $dataArray)
{
$client = static::createClient();
$usersRepository = static::getContainer()->get(UsersRepository::class);
$testUserAdmin = $usersRepository->find(1);
$client->loginUser($testUserAdmin);
$csrfToken = $client->getContainer()->get('security.csrf.token_manager')->getToken($controllerName.'Token_item');
$dataArray['_token'] = $csrfToken;
$crawler = $client->request('POST', '/datagridAddUpdate/'.$controllerName,$dataArray, [], ['HTTP_X_REQUESTED_WITH' => 'XMLHttpRequest']);
$this->assertResponseIsSuccessful('Status code 2xx pour datagridAdd : '.$controllerName);
}
Run Code Online (Sandbox Code Playgroud)
在构建表单之前运行此命令将确保有一个可用的会话:
$request = new Request();
$request->setSession(new Session(new MockArraySessionStorage()));
self::getContainer()->get(RequestStack::class)->push($request);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1407 次 |
| 最近记录: |