Как вы тестируете PHP классы / объекты? - PullRequest
4 голосов
/ 26 января 2010

Я много раз читал в Интернете, что при работе с зависимостями в PHP лучше использовать внедрение зависимостей вместо глобальных, поскольку это облегчает тестирование. Может кто-нибудь объяснить, как это облегчает тестирование? А что бы я использовал для проведения теста?

1 Ответ

3 голосов
/ 26 января 2010

Я бы посоветовал узнать о модульном тестировании и взглянуть на несколько инструментов, доступных для PHP. Я бы порекомендовал PHPUnit , но есть также SimpleTest , который, как я знаю, предпочитают некоторые люди.

Минимизация объема изменяемых данных - это просто хорошая идея в целом. Что касается тестирования, вы можете написать модульные тесты, которые выполняют небольшие, элементарные функциональные возможности, не беспокоясь о том, что переменные были изменены как побочный эффект какой-либо другой операции. Если вы хотите проверить, что состояние объекта - это a, b или c, вы знаете, что нужно проверять, потому что точно знаете, какие операции могут влиять на состояние. Если ваше состояние является глобальным, вы не представляете, какие другие операции в вашем приложении могут повлиять на него, оставляя вам сложную кучу спагетти для обслуживания.

Джошуа Блох хорошо объясняет это в Effective Java, Item 29 . Я бы порекомендовал прочитать это, даже если он не использует PHP, концепция та же самая.

Что касается модульного тестирования, я бы порекомендовал Прагматическое модульное тестирование , опубликованное The Pragmatic Programmers. Существуют версии для Java / JUnit и C # / NUnit, но концепции полностью применимы к PHP, особенно если вы используете PHPUnit, который следует шаблонам xUnit достаточно близко.

...