Хороший ответ Гийома (+1), но я хотел дать дополнительное наблюдение.То, что я вижу в опубликованном вами коде, является основанием для очень распространенного вопроса от людей, пытающихся выяснить (или спорить с) TDD, а именно:
"Как / почему я должен тестировать ComplexMethod ()так как это зависит от SimpleMethod1 () и SimpleMethod2 (), которые уже протестированы и имеют свое собственное поведение, которое я должен учитывать в тестах ComplexMethod ()? Мне пришлось бы в основном дублировать все тесты SimpleMethod1 ()и SimpleMethod2 () для того, чтобы полностью протестировать ComplexMethod (), и это просто глупо. "
Вскоре после этого они обычно узнают о частичных имитациях.Используя частичные имитации, вы можете имитировать SimpleMethod1 () и SimpleMethod2 (), а затем тестировать ComplexMethod (), используя обычные механизмы имитации.«Звучит отлично, - думают они, - это отлично решит мою проблему!».Хорошая фреймворковая среда должна настоятельно не рекомендовать использовать частичные макеты таким образом, потому что реальность такова:
Ваши тесты говорят вам о проблеме проектирования.
Специальноони говорят вам, что вы смешали проблемы и / или уровни абстракции в одном классе.Они говорят вам, что SimpleMethod1 () и SimpleMethod2 () должны быть извлечены в другой класс, от которого зависит этот класс.Независимо от того, сколько раз я вижу этот сценарий, и как бы яростно не утверждал разработчик, тесты подтверждаются в конце 100% времени.