Рассмотрим следующий вывод тест:Как структурировать тесты модулей BDD по нескольким измерениям?
`
Резюмируя, документы Word не поддерживаются, и PDF-файлы являются. Поэтому мы немедленно отвергаем документы Word. Но для PDF-файлов существует намного больше шагов, требующих тестирования, поэтому мы делаем это.
Проблема заключается, скажем, я также хочу поддерживать текстовые файлы, которые имеют тот же рабочий процесс, что и PDF-файлы. Код, который я тестирую, выглядит примерно так:
function uploadDocument(type, document) {
if (type !== "application/pdf" && type !== "text/plain") {
throw new UnsupportedMediaTypeError();
}
// do all the steps involving temp documents, hashing, ownership, etc.
}
Мой вопрос: как я могу структурировать свои тесты для этого? Я не хочу дублировать все дерево под «при загрузке PDF» как «при загрузке текстового файла».
Я чувствую, что сталкиваюсь с этой проблемой много. Как вы видите, я уже сделал некоторое дублирование (записи в разделе «Удаленные временные документы» и «и успешное выполнение временного документа» совпадают).
По существу, это проблема различных размеров системы и их тестирования в сочетании. Кто-то должен был подумать о том, как структурировать такие тесты.
Почему вы не можете параметризовать повествование и использовать для этого тестирование данных. За один проход вы выполняете спецификацию для PDF, а в другом запуске вы выполняете спецификацию для текстового файла. Кстати, какой инструмент вы используете для BDD? Это впечатляет. –
Итак, похоже, что есть решение, и оно подпадает под имена, такие как «параметризация повествования» и «тестирование с помощью данных». Мне понравился бы ответ, объясняющий это! Что касается инструмента, мы используем [Mocha] (http://visionmedia.github.com/mocha/). – Domenic
Вы изучали функцию «Совместное поведение» при мокко? Я не знаком с Mocha, поэтому вы можете спросить на форуме о том, как сделать параметризацию. –