【问题标题】:yii php unit test Yii::app->user->id erroryii php 单元测试 Yii::app->user->id 错误
【发布时间】:2014-03-14 16:35:25
【问题描述】:

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

 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 有问题。我认为问题在于没有用户登录。那么,我该如何解决这个问题,而无需再次复制带有硬编码用户 ID 的类?有没有办法设置应用用户ID?

【问题讨论】:

    标签: yii phpunit


    【解决方案1】:

    不讨论用户是否登录或 Yii::app()->user->id 是否已定义的问题,您需要将其添加到函数的底部:

    return parent::beforeSave();
    

    例如:

    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();
    }
    

    【讨论】:

    • @jbg。你能解释一下代码的作用吗?我今天懒得解决这个问题。 ;)
    猜你喜欢
    • 2014-10-31
    • 2012-06-15
    • 2013-09-28
    • 1970-01-01
    • 2014-06-20
    • 2014-03-14
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多