找不到PHPUnit_框架_MockObject_生成器

找不到PHPUnit_框架_MockObject_生成器,phpunit,Phpunit,我正在从phpunit4.5迁移过来,在那里测试可以正常运行并通过 在phpunit4.5中,我们使用了PHPUnit\u框架\u MockObject\u生成器,这显然在phpunit6中不存在 我们是这样使用它的: public static function getMock() { $generator = new PHPUnit_Framework_MockObject_Generator(); $mock = $generator->generate(

我正在从phpunit4.5迁移过来,在那里测试可以正常运行并通过

在phpunit4.5中,我们使用了
PHPUnit\u框架\u MockObject\u生成器
,这显然在phpunit6中不存在

我们是这样使用它的:

public static function getMock()
{
    $generator = new PHPUnit_Framework_MockObject_Generator();
    $mock = $generator->generate(
        'ezcDbHandlerMysql',
        array(),
        '',
        true,
        true
    );

    if (class_exists($mock['mockClassName'], false) === false) {
        eval($mock['code']);
    }

    $args = array(
        'host' => TEST_DB_HOST,
        'database' => TEST_DB_NAME,
        'username' => TEST_DB_USER,
        'password' => TEST_DB_PASS,
        'driver-opts' => array(PDO::ATTR_PERSISTENT => TEST_DB_PERSISTENCE),
    );

    $class = new ReflectionClass($mock['mockClassName']);
    $object = $class->newInstanceArgs(array($args));

    return $object;
}

我如何重写它以避免类未找到错误?我不知道PHPUnit 6与
PHPUnit\u Framework\u MockObject\u Generator
的等价物是什么。

您有两个选择,您仍然可以通过使用中使用的名称空间MockObjectGenerator来偷偷使用旧代码。如果您遵循,您可以使用
createMock
并以编程方式设置模型。我发现后者提供了更多的便利,因为我不必为了获得我真正关心的第n个参数而将一堆参数设置为默认值,例如,在尝试禁用原始构造函数调用时。因此,升级到
getMockBUilder
可能是一个不错的选择

因为您必须更新您的模拟用法,所以您可能还希望切换出您正在使用的模拟库。PHPUnit附带了我最喜欢的用于大多数用例的捆绑包。它是一个专门化的库,所以做某些事情比使用PHPUnit_Mock库要困难,但我通常使用它作为一种动机,为这些情况重构代码。还有其他模拟库,您可能想签出它们