Symfony 如何在KernelTestCase期间将用户注入TokenStorage
我的一个事件侦听器使用Symfony 如何在KernelTestCase期间将用户注入TokenStorage,symfony,symfony4,Symfony,Symfony4,我的一个事件侦听器使用TokenStorageInterface访问当前用户 在我的内核测试用例(notWebTestCase)期间,也会调用此事件侦听器,但现在没有用户登录 如何在测试中手动注入用户 这不起作用: class MyTest extends KernelTestCase { /** @var User */ private $u; // loaded in setup() public function testSimple() {
TokenStorageInterface
访问当前用户
在我的内核测试用例(notWebTestCase)期间,也会调用此事件侦听器,但现在没有用户登录
如何在测试中手动注入用户
这不起作用:
class MyTest extends KernelTestCase
{
/** @var User */
private $u; // loaded in setup()
public function testSimple()
{
$tokenStorage = static::$container->get(TokenStorageInterface::class);
$token = new UsernamePasswordToken($this->u->getUsername(),null, 'main', ['ROLE_ADMIN']);
self::$kernel->getContainer()->get('session')->set('_security_main', serialize($token)); // does not work
$tokenStorage->setToken('', $token); // does not work as well
}
}
我的坏,我的解决方案是好的,我只是导入了错误的TokenStorageInterface。下面是一个完整的工作示例:
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
class MyTest extends KernelTestCase
{
/** @var User */
private $u; // loaded in setup()
public function testSimple()
{
$tokenStorage = static::$container->get(TokenStorageInterface::class);
$token = new UsernamePasswordToken($this->u, null, 'main', ['ROLE_ADMIN']);
$tokenStorage->setToken($token);
}
}