Как мне практиковать эффективный TDD и избежать этой проблемы?
Дизайн.
Грубо говоря, мы расположили наш код так, чтобы он представлял собой состав из двух модулей.flavors
- Модули, которые легко тестировать
- Модули, которые просты и стабильны
Таким образом, код, который фактически должен взаимодействовать с базой данных, должен бытьвторой тип;нет разветвлений, тривиальных операций, и, самое главное, его не нужно менять очень часто.
Код, который мы пишем, кажется рискованным по своей природе?это входит в модуль "легко проверить".Эти модули слабо связаны с их более простыми кузенами - должно быть легко заменить «тестовую» реализацию на «настоящую».Таким образом, вместо того, чтобы разговаривать с «базой данных» во время нашего тестирования, мы говорим с некоторыми в коллекции памяти, которая просто дает нам ответы в виде сценариев.
Короче говоря, мы упорядочиваем наш код так, чтобы было легко проверить, гдеошибки:
Что касается трудно проверяемых битов;ну, возможно, мы измеряем риски другими способами, или мы запускаем эти тесты с другой частотой, или мы откладываем их тестирование до функциональных тестов, или ...