【发布时间】:2015-03-23 09:49:32
【问题描述】:
是否可以在 PHPUnit 中创建一个不存在的类的模拟?
假设我有一些类创建另一个类的实例,例如:
class TaskRunner
{
public function runTasks()
{
// Run through some loop to get tasks and store each in $taskName
// Get task instance by given task name
$task = $this->getTaskInstance($taskName);
if ($task instanceof AbstractTask) {
$task->run();
}
}
protected function getTaskInstance($taskName)
{
// Just an example
return new $taskName();
}
}
我想对runTasks 方法运行单元测试,以检查创建的任务实例是否扩展了某些抽象类。
是否有可能不在文件系统中创建示例类来检查继承约束?
谢谢大家!
【问题讨论】:
-
->getMock('AbstractTask')? -
@PeeHaa 好的,可以让条件运行为真。非
AbstracTask-扩展类呢?模拟stdClass? -
您也可以使用 phpunit 模拟具体的类。但您更有可能想输入一个界面。
-
@PeeHaa 当然,我明白你的意思。但是让我们假设有两个类,一个扩展了
AbstractClass,第二个没有扩展,纯基类。我不想在文件系统中创建它们,但我确实想模拟它们。第一个,好的,我可以模拟AbstractClass,它可以完成这项工作。第二个呢?它不实现任何接口,也不扩展任何其他类。我想为instanceof条件失败写一个测试。
标签: unit-testing mocking phpunit