在测试实例化之前设置静态方法模拟

时间:2019-04-23 17:13:56

标签: php phpunit

我有一个抽象类,该抽象类在其构造函数中调用静态方法。但是,在PHPUnit中编写测试时,当我尝试为其创建模拟程序时,它会抱怨,因为静态方法是抽象的,因此在构造时未定义。

$interface = $this->getMockForAbstractClass(ConnectionAdapterInterface::class, [[]]);
$interface->method('createConnection')
    ->willReturn(new TestConnection());
$connection = $interface::createConnection();
abstract class ConnectionAdapterInterface
{

    public function __construct(array $configs) {
        $this->connection = static::createConnection($configs);
    }

    abstract public static function createConnection(array $config);

}

它显示错误Static method "createConnection" cannot be invoked on mock object

请忽略该类称为接口;它是功能上的一个,但命名不佳,我想不出其他的命名方式。

1 个答案:

答案 0 :(得分:0)

不能对静态方法进行存根或模拟。