我有
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); }
解决方法
被测试的动作是否在同一个防火墙下?