PHPUnit v.4 +模拟静态方法

时间:2015-03-18 15:36:50

标签: phpunit

我使用一种方法跟随课程:

class A 
{
    public function my( $myParam )
    {       
        \modelClass::truncateTable('table_name');

        return $myParam * 4;            
    }   
}

是否可以模拟静态方法" truncateTable"?我想确保在"我的"方法。 PHPUnit 4.5版,所以" staticExpects"在此版本中不再可用(取决于此post)。

1 个答案:

答案 0 :(得分:-1)

您可以使用将包装静态调用的Proxy类。

class ProxyModel{
   public function truncateTable($tableName){
      \modelClass::truncateTable($tableName);
   }
}

之后,在使用静态调用的类中使用代理类方法。

class A{
   private $model;

   public function __construct(ProxyModel $model){
      $this->model = $model;
   }

   public function my(){
      $this->model->truncateModel("table_name");
   }

}

现在,您可以轻松地模拟代理类并将其作为依赖项传递给您的类。