Я пишу модульный тест, который опирается на внешний класс, exceptionManager. Я хочу быть в состоянии предсказать, что будут возвращать некоторые конкретные функции в этом классе, поэтому я использую фиктивный объект. Код довольно прост:
$mockExceptionManager = $this->getMock('exceptionManager');
Проблема в том, что мой менеджер исключений реализует интерфейс IteratorAggregate, для которого требуется метод, который выглядит следующим образом:
public function getIterator()
{
return new ArrayIterator($this->exceptions);
}
Когда я запускаю модульный тест, я получаю следующую ошибку:
Неустранимая ошибка: невозможно переопределить Mock_exceptionManager_ae79bad2 :: getIterator () в /Applications/MAMP/bin/php5.2/lib/php/PEAR/PHPUnit/Framework/MockObject/Generator.php(170) dval () код в строке 297
У меня такое ощущение, что набор фиктивных объектов PHPUnit также реализует интерфейс IteratorAggregate, и эти два конфликтуют, хотя я не уверен. Я также попытался использовать интерфейс Iterator, но столкнулся с той же проблемой. Как я могу обойти это?