我已经在security.interactive_login事件上实现了一个监听器,以设置一个在我的应用程序中使用的会话变量,如Symfony2: After successful login event, perform set of actions中所建议的那样。问题是在功能测试中没有触发security.interactive_login事件(我想这是合乎逻辑的,因为没有实际的交互式登录)。鉴于此限制:如何在用户登录时设置会话变量来运行功能测试?
答案 0 :(得分:1)
如果您使用基本身份验证,您可以最终手动触发事件处理程序进行测试,但我认为更合适的方法是通过登录表单登录到应用程序并通过客户端提交 - 事件监听器应该被解雇。
答案 1 :(得分:0)
只是为解决方法带来详细信息:
在功能测试案例中我改变了
$client = static::createClient(array(), array(
'PHP_AUTH_USER'=>'alberto'
,'PHP_AUTH_PW'=>'********'
)
);
对于
$client = static::createClient();
$crawler = $client->request('GET','/secured/login');
$form = $crawler->selectButton('Aceptar')->form();
$form['_username'] = 'alberto';
$form['_password'] = '********';
$crawler = $client->submit($form);