1

我正在使用 phpunit 在 Yii 中运行单元测试。所有测试都通过了,但是当我期望看到三个时,它在数据库中留下了一条记录,一条用于测试登录时的固定装置,两条来自我在测试成员注册时调用的 ARO 保存。

我在一个专门用于测试的单独数据库中执行此操作。这是我应该关注的事情还是可能与拆卸有关的典型行为?

“testReg”的记录保留在此代码之后的数据库中,即使它保存在“testReg2”之前。如果我注释掉该保存,“testReg2”仍然存在。如果我注释掉这两个,夹具数据仍然存在。

这是测试:

class UserTest extends CDbTestCase
{
public $fixtures=array(
    'users'=>'User',
);

/**
 * Valid user can login to backend
 * @return void
 */
public function testBackendUserLogin()
{
    $model = new LoginForm();
    $model->attributes = array('username'=>'member', 'password'=>'password');
    $this->assertTrue($model->validate(array('username', 'password')));
    $this->assertTrue($model->login());
}

/*
 * Only logged in super-admin or sub-admins with approved accounts may create new members
 * @return void
*/
public function testBackendMemberRegister(){
    $member=new Member();
    $member->register(array(
        'username'=>'testReg',
        'password'=>'password',
    ));
    $member2=new Member();
    $member2->register(array(
        'username'=>'testReg2',
        'password'=>'password',
    ));
}

}

夹具:

return array(
    'user'=>array(
        'username'=>'member',
        'password'=>'$2a$08$U/z5X4Y1Ok4g20t6DWSwqezgNylpqdjKmrsMFBJDvLqQmOKMG6SvO',
        'created'=>'04-05-2013 00:00:00',
        'modified'=>'04-05-2013 00:00:00',
    )
);

调用 ARO 保存的方法在 User 类中。成员类扩展用户类。

public function create(array $submission){
    $this->attributes=$submission;
    $this->hashPassword();
    $submission['password']=null;   //for safety
    if($this->save()){
        return true;
    }
    return false;
}
4

1 回答 1

0

我断言在 r​​egister() 之后检查记录是否存在并且它通过了。一切都在前端工作,所以现在我将其归因于拆解,尽管我找不到明确的文档。

于 2013-06-04T14:11:46.573 回答