我需要模拟类的静态方法。但是在phpunit:4和更高版本中,不可能模拟静态方法(我收到消息“静态方法“ findBy”无法在模拟对象上调用”的异常)。我需要如何配置模拟才能获得成功的测试?
我尝试手动创建没有phphunit的模拟类。像tests/Mocks/MyClass.php
这样的东西,它扩展了抽象类并实现了我的静态方法/
interface IdentityInterface
{
// this method calling first in other component
public static function findBy(string $number, ?string $trunk): ?IdentityInterface;
}
abstract class Identity implements IdentityInterface
{
// this method and other calling after findBy method
public function getName(): string
{
return $this->name; // need to cover
}
}
我的静态方法必须返回其自身的实例,才能使用我需要介绍的其他内部方法。