【发布时间】:2019-04-24 01:19:27
【问题描述】:
我有一个抽象类,它在它的构造函数中调用一个静态方法。但是,当我在 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。
请忽略该类称为接口;它是一种功能,但名称不佳,我想不出其他名称。
【问题讨论】: