Использование PHPUnit 3.6 Я пытаюсь протестировать exec ()
в следующем классе контроллера.Этот метод выполняет две функции:
(упрощенный) исходный код выглядит так:
abstract class CLIController extends Controller
{
/* irrelevant class details here */
public function exec()
{
$action = ! empty($this->opts->args[0])
? $this->opts->args[0]
: $this->default_action;
if ( ! $action || ! is_callable(array($this, $action))) {
$msg = 'Invalid controller action specified';
throw new LogicException($msg);
} else {
$this->$action(); // <---- trying to get code coverage on this line!
}
}
}
Я не могу понять, как охватить эту часть кода:
} else {
$this->$action();
}
потому что я не уверены, как (или даже возможно) протестировать вызов метода, имя которого неизвестно в контексте абстрактного класса. Опять же: вызываемый метод объявлен в дочерних классах. Обычно я просто имитирую абстрактный метод, но в этом случае я не могу, потому что метод еще не существует - он будет указан дочерним классом.
exec ()
выдает исключение, когда это должно быть, я знаю, что правильное функционирование рассматриваемой строки зависит от правильного функционирования PHP. Делает ли это недействительной необходимость тестирования в первую очередь ??? exec ()
. Я был бы очень признателен за любые советы о том, как лучше всего действовать здесь. Заранее спасибо.