Юнит-тестирование Javascript Sandbox - PullRequest
5 голосов
/ 09 февраля 2010

Я использую QUnit, который отлично.

Я вложил свое приложение JS в песочницу (function () {})();. Это скрывает много кода, который я не хочу публиковать, но мне также нужно протестировать этот код.

Вот пример того, как это работает:

(function () {  

    var PublicAPI = window.PublicAPI = {};        
    PublicAPI.publicFunction = function (foo) {
        PrivateAPI.privateFunction(foo);
        return 'bar';
    };

    var PrivateAPI = {};
    PrivateAPI.privateFunction: function (foo) {
       // Make secret stuff that never gets returned to the public
       // Could be an AJAX call.
    }

})();

Так что здесь я могу легко выполнить юнит-тест PublicAPI.publicFunction, но как я буду тестировать PrivateAPI.privateFunction?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2010

Этот похожий вопрос довольно хорошо подытоживает ... Самое простое - не иметь дело с закрытыми методами, так как они могут измениться, если захотят ... Публичные методы - это те, которые требуют тестирования , Если вы хотите протестировать свои внутренние функции, вам нужно оставить какой-то хук, чтобы qunit мог его найти.

1 голос
/ 10 февраля 2010

Вы не можете. Нет доступа к нему за пределами этой области. Ваша единственная надежда - это интеграционное тестирование, то есть тестирование функций на глобально доступном объекте, которые используют ваши внутренние функции.

Еще лучше: не создавайте приватные функции. Что в этом такого?

...