Я создаю модуль узла, который обертывает ряд вызовов API GitHub и в моей бесконечной мудрости построил это с использованием шаблона раскрывающего модуля, сохраняя мои функции упаковки частные и только разоблачение простых методов. См. Приведенный ниже пример:Как вы закрываете частные функции при модульном тестировании модуля выявления
github.shortcuts = (function(){
var appPath;
var createRepo = function(name){
var deferred = Q.defer();
github.repos.create({
name: name,
auto_init: true
}, function(error, result){
if (error) {
deferred.reject(new Error(error));
} else {
deferred.resolve(result);
}
});
return deferred.promise;
};
var updateRef = function(result){
var deferred = Q.defer();
var user = result.user;
var repo = result.repo;
github.gitdata.updateReference({
user: user,
repo: repo,
ref: 'heads/master',
sha: result.sha
}, function(error, result){
if (error) {
deferred.reject(new Error(error));
} else {
deferred.resolve(result);
}
});
return deferred.promise;
};
return {
init: function(token, name, path){
var deferred = Q.defer();
appPath = path;
var error = function(error){
return deferred.reject(error);
};
github.authenticate({
type: "oauth",
token: token
});
createRepo(name)
.then(updateRef, error)
.then(function(result){
deferred.resolve(result);
}, error);
return deferred.promise;
}
};
})();
Тем не менее, для этого я выполняю тесты единицы измерения. Я не хочу проверять свои личные функции, просто публичный init()
, однако я бы хотел закрыть отдельные функции, чтобы тест не вызывал API GitHub. Я использую Mocha и Chai для своих тестов и Sinon для своих шпионов/заглушек.
Любые советы о том, как заглушить эти функции или если это плохой шаблон, как еще я должен протестировать этот модуль, будем признательны!