Всем известно, что чтобы успешно писать юнит-тесты, особенно, не применяя TDD, сам код должен быть написан в определенной манере, так, чтобы его было легко тестировать. По мотивам статьи Unit Testing – The Big Picture я составил/перевел краткую шпаргалку (или чек-лист), на что обратить внимание при нового написании кода (в первую очередь на PHP, но не только).
- Принципы SOLID и DRY
- Не использовать ключевое слово new в конструкторе
- Не использовать циклы в конструкторе (а также switch и if)
- Никаких статичечких методов, параметров, классов
- Никаких методов setup() – объект должен быть полностью проинициализирован в конструкторе
- Никаких синглтонов (глобальных состояний) и других нетестируемых антипаттернов
- Никаких «всемогущих объектов» (God object)
- Нет классам со смешанным предназначением
- Никаких скрытых зависимостей