Как написать хорошие модульные тесты в функциональном программировании

Я использую функции вместо классов и обнаружил, что не могу сказать, когда другая функция, на которую он полагается, является зависимостью, которая должна быть индивидуально -проверено или внутренняя деталь реализации, которой не должно быть. Как узнать, какой это?

Небольшой контекст: я пишу очень простой интерпретатор Лиспа, который имеет функцию eval () . У него будет много обязанностей, на самом деле слишком много, например, оценивать символы иначе, чем списки (все остальное оценивается само). При оценке символов он имеет свой собственный сложный рабочий процесс (поиск среды), а при оценке списков он еще более сложен, поскольку список может быть макросом, функцией или специальной формой, каждый из которых имеет свой собственный сложный рабочий процесс и набор обязанностей.

Я не могу сказать, следует ли считать мои функции eval_symbol () и eval_list () деталями внутренней реализации eval () которые необходимо протестировать с помощью собственных модульных тестов eval () ,или подлинные зависимости сами по себе, которые следует тестировать отдельно от модульных тестов eval () .

14
задан Steven Degutis 6 August 2011 в 13:45
поделиться