【发布时间】:2021-09-03 20:19:50
【问题描述】:
嘿,所以我有以下方法,当尝试模拟 Manager::getConfiguration 调用时,我无法让它工作。我尝试使用 namedMock 以及单元测试装饰器让它在另一个线程中运行。它要么给我一个类已经存在的错误,要么实际上提取了我不想要的管理器配置。
public function getBaseTypeManagerConfig() {
$baseTypeManagerConfig = array();
if (!empty($this->dataConfig)
&& !empty($baseType = $this->dataConfig->getBaseType())) {
$baseTypeManagerConfig = Manager::getConfiguration($baseType);
}
return $baseTypeManagerConfig;
}
/**
* @runTestsInSeparateProcesses
* @preserveGlobalState disabled
*/
public function testBaseTypeManagerConfig() {
$managerMock = Mockery::namedMock('Manager', 'ManagerStub');
$managerMock->shouldReceive('getConfiguration')->andReturn(self::MOCKED_MANAGER_DECODED_JSON);
$listModule = Mockery::mock('GenericListModule')->makePartial();
$listModule->shouldReceive([
'getBaseType' => 'events',
]);
$config = \SWL\Lib\Generic\ConfigFactory::getConfig('Events_Event');
$listModule->shouldReceive('setDataConfig')->andSet('dataConfig', $config);
$baseTypeManagerConfig = $listModule->getBaseTypeManagerConfig();
$this->assertEquals(array(), $baseTypeManagerConfig);
}
// Attempt at using named mock to replace 'Manager' class with mock
class ManagerStub {
public static function getConfiguration($configType) {
return array();
}
}
关于为什么我不能使用这个命名的模拟来替换 Manager 调用有什么想法吗?单元测试和 phpunit/mockery 的新手,因此欢迎任何其他指针。谢谢! :)
【问题讨论】:
标签: php unit-testing phpunit