Тестирование белого ящика в Javascript - как бороться с конфиденциальностью? - PullRequest
6 голосов
/ 29 мая 2010

Я пишу модульные тесты для модуля в небольшом приложении Javascript. Чтобы поддерживать интерфейс в чистоте, некоторые детали реализации закрыты анонимной функцией (обычный шаблон JS для конфиденциальности). Тем не менее, во время тестирования мне нужно получить доступ к / mock / проверить приватные части.

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

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

Итак, есть ли стандартный способ сохранить переменные закрытыми, сохраняя при этом некоторые бэкдоры для тестирования в Javascript?

1 Ответ

1 голос
/ 29 мая 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...