当我从phpunit登录时,当前用户的对象在Symfony控制器中为NULL

我有 PHPUnit的登录功能,并将其用作测试用户的授权.

private function logIn(Client $client)
{
    $session = $client->getContainer()->get('session');

    /** @var User $user */
    $user = $client->getContainer()->get('doctrine')->getRepository('DWDAdminBundle:User')->find(1);
    //Here I have user object

    $firewall = 'main';
    $token = new UsernamePasswordToken($user,null,$firewall,['ROLE_ADMIN']);
    $client->getContainer()->get('security.token_storage')->setToken($token);
    $session->set('_security_'.$firewall,serialize($token));
    $session->save();

    $cookie = new Cookie($session->getName(),$session->getId());
    $client->getCookieJar()->set($cookie);
}

在测试过的动作中有这个代码

$checkResult = $this->get('dwd.service.coupon')->checkCoupon(
            $coupon,$request->query->all(),$this->getUser()->getPortalId()
            // Here $this->getUser returned NULL
        );

虽然我在testU的setUp()中授权了我的测试用户,但函数getUser()以某种方式返回了Null

public function setUp()
{
    parent::setUp();

    $this->client = static::createClient();
    $this->logIn($this->client);

}

解决方法

被测试的动作是否在同一个防火墙下?

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...