Тестирование методом "белого ящика" в JavaScript - как иметь дело с конфиденциальностью?

Я пишу модульные тесты на модуль в маленьком приложении JavaScript. Для содержания интерфейса в чистоте некоторые детали реализации закрываются анонимной функцией (обычный шаблон JS для конфиденциальности). Однако при тестировании я должен получать доступ/дразнить/проверять к половым органам.

Большинство тестов, которые я записал ранее, было в Python, где нет никаких реальных частных переменных (участники, идентификаторы, независимо от того, что Вы хотите назвать их). Каждый просто предлагает конфиденциальность через начальный символ подчеркивания для пользователей и свободно игнорирует ее при тестировании кода. На языках OO со статическим контролем типов я предполагаю, что можно было сделать членов парламента, не занимающих официального поста доступными для тестов путем преобразования их, чтобы быть защищенным и разделения на подклассы объекта, который будет протестирован. В JavaScript не подает заявку последний, в то время как первый походит на плохую практику.

Я мог всегда отступать к тестированию методом "черного ящика" и просто проверять конечные результаты. Это - самый простой и самый чистый подход, но к сожалению не действительно подробное достаточно для моих потребностей.

Так, есть ли стандартный способ сохранить переменные частными, все еще сохраняя некоторые бэкдоры для тестирования в JavaScript?

6
задан agf 29 September 2011 в 14:53
поделиться

1 ответ

Нет. Я не верю, что есть. Это в основном сводится к тому, используете ли вы подход закрытия и отказываетесь от тестов белого ящика или проводите тесты белого ящика и используете украшение имени для «частных» членов. На самом деле не только в Python, но и в javascript слишком многие проекты используют не очень волшебное подчеркивание для украшения частных лиц. Так что в каком-то смысле это уже широко распространенное решение проблемы.

Если вы этого не хотите и действительно нуждаетесь в модульном тестировании методом белого ящика, вы всегда можете интегрировать тесты в свои объекты. Если у вас есть отдельный этап сборки для производственного кода (минимизация, требование / предоставление разрешения и т. Д.), Вы можете удалить тестовые функции в этом процессе.

1
ответ дан 17 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: