phpunit を使用して Yii で単体テストを実行しています。すべてのテストに合格していますが、データベースには 1 つのレコードが残っていますが、3 つ表示されると予想していました。
テスト専用の別のデータベースでこれを行っています。これは私が懸念すべきことですか、それとも典型的な行動はおそらく分解に関連していますか?
「testReg2」の前に保存されていても、「testReg」のレコードはこのコードの後にデータベースに残ります。その保存をコメントアウトすると、「testReg2」が残ります。この 2 つをコメントアウトすると、フィクスチャ データが残ります。
テストは次のとおりです。
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 にあります。Member クラスは User クラスを拡張します。
public function create(array $submission){
$this->attributes=$submission;
$this->hashPassword();
$submission['password']=null; //for safety
if($this->save()){
return true;
}
return false;
}