找不到PHPUnit_框架_MockObject_生成器
我正在从phpunit4.5迁移过来,在那里测试可以正常运行并通过 在phpunit4.5中,我们使用了找不到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(
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库要困难,但我通常使用它作为一种动机,为这些情况重构代码。还有其他模拟库,您可能想签出它们