Никак не могу себя приучить к правильной (согласно TDD) работе: сначала пишем тесты, потом код, такой чтобы тесты не работали, а лишь потом его правим, чтобы заработали.
Сложности две:
— лениво писать тесты на тривиальный код (то есть кода ещё нет «на бумаге», но «в голове» уже он есть)
— лениво писать тесты, предусматривающие всё и вся, например, что методы доступа к СУБД вернут какую-ту ахинею, а не либо корректные данные, либо ошибку. Или, скажем, конструкция return new SomeClass() вернёт не экземпляр SomeClass.
Вероятно я написание тестов так до конца и недопонял, особенно что касается тестирования связанных объектов (например кобинации контроллер, модель, репозиторий)