gpt4 book ai didi

PHPUnit v.4+ 模拟静态方法

转载 作者:行者123 更新时间:2023-12-02 05:17:26 25 4
gpt4 key购买 nike

我用一种方法有以下类(class):

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

return $myParam * 4;
}
}

是否可以模拟静态方法“truncateTable”?我想确保它在“我的”方法中被调用过一次。 PHPUnit 版本 4.5,因此“staticExpects”在此版本中不再可用(取决于 post )。

最佳答案

您可以使用 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");
}

}

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

关于PHPUnit v.4+ 模拟静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29126284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com