yii php单元测试yii::app->;用户->;id错误

yii php单元测试yii::app->;用户->;id错误,yii,phpunit,Yii,Phpunit,我正在测试一个保存模型的类。这个模型有一个行为,它使用这个方法保存我要插入的记录的用户 public function beforeSave($event) { if (($this->getOwner()->getTableSchema()->getColumn($this->campoUsuarioCreacion)!==null)) $this->getOwner()-&

我正在测试一个保存模型的类。这个模型有一个行为,它使用这个方法保存我要插入的记录的用户

 public function beforeSave($event) {                       
        if (($this->getOwner()->getTableSchema()->getColumn($this->campoUsuarioCreacion)!==null)) 
            $this->getOwner()->{$this->campoUsuarioCreacion} = Yii::app()->user->id;

        if ($this->getOwner()->getTableSchema()->getColumn($this->campoUsuarioModificacion)!==null) 
            $this->getOwner()->{$this->campoUsuarioModificacion} = Yii::app()->user->id;

       return parent::beforeSave();
    }

但是当我进行测试时,Yii::app()->user->id出现问题。我认为问题在于没有用户登录。那么,我如何解决这个问题,而不必再次复制带有harcoded用户id的类呢?有没有一种方法可以设置应用程序用户id?

在不涉及用户是否已登录或是否定义了Yii::app()->user->id的情况下,您需要将其添加到函数的底部:

return parent::beforeSave();
例如:


@jbg。你能解释一下代码的作用吗。我今天就懒得去想办法了
public function beforeSave($event) {                       
    if (($this->getOwner()->getTableSchema()->getColumn($this->campoUsuarioCreacion)!==null)) 
        $this->getOwner()->{$this->campoUsuarioCreacion} = Yii::app()->user->id;

    if ($this->getOwner()->getTableSchema()->getColumn($this->campoUsuarioModificacion)!==null) 
        $this->getOwner()->{$this->campoUsuarioModificacion} = Yii::app()->user->id;

    return parent::beforeSave();
}