Doctrine orm 如何测试自定义类型

Doctrine orm 如何测试自定义类型,doctrine-orm,doctrine,Doctrine Orm,Doctrine,如上所述,可以创建自定义类型s 我已经做了,但现在我想测试这个类,但不幸的是这是不可能的 实际上,自定义类型扩展了类Doctrine\DBAL\Types\type,该类似乎无法实例化 实际上,它的构造函数是这样构建的: /** * Prevents instantiation and forces use of the factory method. */ final private function __construct() { } 如注释中所述,需要使用工厂方法来实例化类,但是,这

如上所述,可以创建自定义
类型
s

我已经做了,但现在我想测试这个类,但不幸的是这是不可能的

实际上,自定义类型扩展了类
Doctrine\DBAL\Types\type
,该类似乎无法实例化

实际上,它的构造函数是这样构建的:

/**
 * Prevents instantiation and forces use of the factory method.
 */
final private function __construct()
{
}
如注释中所述,需要使用工厂方法来实例化类,但是,这个工厂方法是什么?我在哪里可以找到它?

通过模拟和github上的一个问题的组合,我能够对一个条令类型进行单元测试。我想这适用于与平台无关的简单类型。对于更复杂的类型行为,可以使用不同的模拟来替换平台

/**
 * @test
 */
public function willCastValueToInt()
{
    $typeBuilder = $this
        ->getMockBuilder(IntegerType::class)
        ->disableOriginalConstructor()
        ->setMethods(null);

    $type = $typeBuilder->getMock();
    $platform = $this->getMockForAbstractClass(AbstractPlatform::class);

    $result = $type->convertToPHPValue('3', $platform);

    $this->assertSame(3, $result);
}

您可以看一看DBAL测试套件,例如这个测试Mmm。。。似乎
Doctrine\Tests\DBAL\Mocks\MockPlatform是没有根据的!-.-'他们提到了这一点,但我不知道他们是怎么打破的。