2014-10-31 1 views

ответ

1

Не с PHPUnit Mock Object в вашем модульном тесте вы не можете.

В зависимости от того, как вы загружаете свои классы, вы сможете создать класс «mock», который заменит объект. Это будет выглядеть следующим образом:

Ваш тестовый файл:

class Object { 
    <mock functionality here> 
} 

class TestCase extends PHPUnit_Framework_TestCase { 
<your tests> 
} 

Однако это вызовет проблемы, если вы действительно хотите испытать Object в другом тесте. В этом случае вы получите фатальную ошибку, заявив, что вы не можете переопределить класс. Это не лучшая практика.

Лучше всего реорганизовать класс, чтобы вы использовали инъекцию зависимостей. Измените класс так, чтобы он воспринимал объект как аргумент конструктора или являлся частью сигнатуры метода.

Эта статья может быть полезной: http://misko.hevery.com/2008/07/08/how-to-think-about-the-new-operator/

+0

Спасибо, я хотел бы использовать Dependency Injection нормально, но я тестирование кода я не писал, что нет инъекции зависимостей и имеет жира, на самом деле жир контроллеры. – teeyo

+1

Для контроллеров, я нахожу, что вы в конечном итоге с чем-то, что большинство людей считают «интеграцией» в любом случае. Таким образом, вы получаете начальный сквозной тест API, который позволяет вам реорганизовать с помощью DI – Schleis

+0

. Я начинаю чувствовать, что я повторяю себя, используя функциональное тестирование с помощью PHPUnit и приемочные тесты с Behat, я думаю, я 'просто продолжайте модульное тестирование моделей и помощников и приемочных испытаний для контроллеров. – teeyo

Смежные вопросы