2015-01-08 2 views
1

Я не слишком хорошо знаком с jquery, кроме его основ, поэтому я могу просто пропустить некоторую терминологию при поиске этого, но у меня есть функция, подобная приведенной ниже, и я неспособный выполнить его тестирование.Функция проверки единицы измерения внутри jquery

$(function() { 
    function GetUsers() { 
     //does cool stuff to get and return users 
    } 
} 

Я пробовал такие вещи, как:

it('should get users', function() { 
    GetUsers(); 
}); 

и даже пытался назвать функцию JQuery, как:

$(function Actions() { 
    function GetUsers() { 
     //does cool stuff to get and return users 
    } 
} 

и вызова Actions.GetUsers() в моем тестовом модуле, но все еще не работает.

Ошибки я получаю:

ReferenceError: GetUsers is not defined

+0

Функция определена внутри анонимной функции, переданной в '$()', поэтому она является частной для этой функции. Это не очень специфично для jQuery; это основное определение JavaScript. – Pointy

ответ

2

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

Вариант 1

var GetUsers = function(){} 

$(function(){ 
    ... // use GetUsers somehow 
}); 

// You can now test GetUsers 

Вариант 2

var someTestableContext = {}; 

$(function(){ 
    someTestableContext.GetUsers = function(){}; 
}); 

// You can now test someTestableContext.GetUsers 

Примечание

Вы можете посмотреть в определении объема и структуры модульность в JavaScript. Ваша проблема не имеет ничего общего с jQuery.

Смежные вопросы