Подтвердить что ты не робот

PHPUnit: макет несуществующих классов

Возможно ли создать макет несуществующего класса в 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();
    }
}

Я хотел бы запустить метод unit test для runTasks, чтобы проверить, не создает ли созданная задача instace некоторый абстрактный класс.
Есть ли возможность НЕ создать образец класса в файловой системе, чтобы проверить ограничение наследования?
Спасибо всем!

4b9b3361

Ответ 1

Да, можно заглушить/издеваться над классами, которые не существуют с PHPUnit. Просто выполните $this->getMockBuilder('NameOfClass')->setMethods(array('foo'))->getMock(); для создания объекта несуществующего класса NameOfClass, который предоставляет один метод foo(), который можно настроить с помощью API, как обычно.