2017-01-05 8 views
-1

Функция Необходимость испытания:Модульное тестирование JavaScript с помощью жасмин - Карма: Как издеваются переменные, используемые внутри функции

function validate() { 
    var isOk = false; 
    var radios = $('input[name="abc"]:checked', '#parentDiv'). val() ; 

    If(radios === "ok")  
     isOk = true; 

    return isOk; 
} 

Я хочу написать тестовый пример для приведенного выше кода. Я использую Jasmine-Karma для достижения этого. У меня есть сомнения Как я издеваться переменными радиоприемниками которая становится значением из селектора JQuery и назначить ей высмеивало значение, так что тест может продолжать испытывать остальную часть оставшейся функции

Контрольного примера:

describe("validate ok check", function() { 
it("validate returns true", function() { 
expect(validate()).tobe(true); 
}) ; 
}) ; 

в настоящее время на запуск тестового примера переменной радиоприемники становится назначенным неопределенным значение, но я хочу, чтобы дразнить его, чтобы получить «OK» значение, присвоенное ему успешно пройти TestCase.

+1

'' input [name = "abc"]: checked ', 'я полагаю, вам не нужно иметь пробел между здесь. – Jai

+0

У вас есть вопросы? – Jai

+0

@jai почему вы удалили свой комментарий? Вы дали неконтекстный ответ на мой вопрос выше, а затем удалили свой ответ и мой комментарий, где даже я разработал вопрос для лучшего понимания. Пожалуйста, позвольте другим людям ответить или, пожалуйста, дайте мне знать, какие детали вам нужны, а какая часть нечеткая? – Bauddhik

ответ

0

В контексте кармы вы должны проверить функциональность JS-only. Ваш код содержит JQuery, который зависит от существующего DOM (браузера), поэтому он не подходит для таких тестов.

Вы можете издеваться над самим JQuery в этом случае. Так как вы используете его в качестве глобальной переменной, вы можете просто переписать его в тесте:

$ = function(selector) { 
    if (selector) === 'input[name="abc"]:checked', '#parentDiv' { 
    return { 
     val: function() { return 'ok'; } 
    }; 
    } 
}; 

describe("validate ok check", function() { 
    it("validate returns true", function() { 
    expect(validate()).tobe(true); 
    }) ; 
}) ; 

Примечание: это очень прямой путь - вы можете использовать макет жасмина вместо того, чтобы сделать его более надежным (например, также зарегистрируйте то, что вы ожидаете, вызвали из jquery и сколько раз и т. д.).