如何在Symfony 2中进行需要验证的功能测试?

时间:2011-07-17 23:58:33

标签: php testing symfony

我找不到任何关于此的文档。

我正在使用客户端对象向/ login发送请求,填写表单并提交。这样可以正常工作,但我收到了302响应/ login,就好像凭据不正确一样。

在任何情况下,我认为在第一个请求之后会话表中至少应该有一行,但是没有。怎么可能?

有什么想法吗?

编辑:这是代码:

    // Go to login page
    $client = $this->createClient();
    $crawler = $client->request('GET', '/login');
    $this->assertTrue($crawler->filter('html:contains("Username")')->count() > 0);

    // Fill in the form and submit it
    $form = $crawler->selectButton('login')->form();
    $form['_username'] = 'admin';
    $form['_password'] = 'admin';
    $client->submit($form);
    $this->assertEquals(302,$client->getResponse()->getStatusCode());
    $this->assertFalse($client->getResponse()->isRedirect('http://localhost/login'));

最后一个断言失败

2 个答案:

答案 0 :(得分:2)

您应该使用http基本身份验证创建一个新的firewal:

security:
    ...
    firewalls:
        functional_test:
            pattern: /secure/.*
            stateless: true
            http_basic:
                provider: provider_name
    ...

然后创建一个这样的客户端:

$client = $this->createClient(array(), array(
    'PHP_AUTH_USER' => 'username',
    'PHP_AUTH_PW' => 'password',
));

快乐的编码!

答案 1 :(得分:0)

不远处的官方文件包括文章How to simulate Authentication with a Token in a Functional Test。可能对某人有帮助。