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

StackOverflow https://stackoverflow.com/questions/2932917

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top