6

我想测试登录功能是否正常工作并且只允许有效和活跃的用户进入。

我的用户夹具包含:

array(
        'password' => '*emptyPasswordHash*', // empty password
        'username' => 'Lorem',
        'balance' => 0,
        'currency' => 'USD',
        'id' => 1,
        'user_group_id' => 3, //Customer
        'active' => 1,
        'hash' => 'LoremHash'
    ),

我的测试功能如下所示:

function testLogin() {
            //test valid login
            $result = $this->testAction('/users/login', array(
                'data' => array(
                    'User' => array(
                        'username' => 'Lorem',
                        'pass' => '',
                        'remember' => true
                )),
                'method' => 'post',
                'return' => 'view'
            ));

            debug($result);

}

登录表单有 3 个输入usernamepasswordremember

我已经设置$this->Auth->autoRedirect = false;UsersController::beforeFilter,我正在做一些 cookie 设置的东西

当我debug($this->data);UsersController::login()其中测试时和正常记录时显示完全相同的数据。但是在测试登录失败时,我收到$this->Auth->loginError消息而不是登录。

如何正确测试登录操作?

4

2 回答 2

1

如果您使用 cakes Auth 组件并且不破解它,您不需要...

https://github.com/cakephp/cakephp/blob/master/cake/tests/cases/libs/controller/components/auth.test.php#L545

如果你真的想,看看专业人士是怎么做的:)

于 2011-04-05T12:55:18.543 回答
0

您是否还设置了自定义函数,如 The CakePHP 手册中所述:

通常,AuthComponent 将尝试通过将您输入的登录凭据与存储在您的用户模型中的内容进行比较来验证您输入的登录凭据是否准确。但是,有时您可能需要做一些额外的工作来确定正确的凭据。通过将此变量设置为几个不同的值之一,您可以做不同的事情。

于 2011-04-03T17:51:26.177 回答