Ich habe die Login-Funktion für PHPUnit und benutze es für die Autorisierung als Testbenutzer.Das Objekt des aktuellen Benutzers ist NULL im Symfony-Controller, wenn ich mich von phpunit aus anmelde
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);
}
In getestet Aktion haben diesen Code:
$checkResult = $this->get('dwd.service.coupon')->checkCoupon(
$coupon,
$request->query->all(),
$this->getUser()->getPortalId()
// Here $this->getUser returned NULL
);
hier irgendwie funktionieren getUser() zurückgegeben Null, obwohl ich mein Testbenutzer in setUp() der Test
public function setUp()
{
parent::setUp();
$this->client = static::createClient();
$this->logIn($this->client);
}
Sind Sie sicher, dass das Repository-Benutzerobjekt kein Array zurückgibt? Sollte nicht 'findOne()' sein? – malcolm
@malcolm Ja, es gibt das Objekt zurück. http://prntscr.com/cdad5q –