Jasmine 3.3 как смоделировать функцию, которая запускается при загрузке окна - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть страница, которая загружает данные, используя ajax;

function loadData() {
$.ajax({        
    url: makeUrl("regapproval"),
    headers: { 'Authorization': 'Bearer ' + Cookies.get('token') },
    crossDomain: true,
...
})    
.done(function (json) {
...
})
.fail(function (xhr, status, errorThrown) {
    AjaxErrorHandler(xhr, status, errorThrown); 
})
...

Она запускается при загрузке страницы;

$(function () {    
loadData();
$("#save").on("click", doSave);
$("#cancel").on("click", doCancel);    

});

У меня есть другаяфункция, которая выполняет простой сброс, который я хочу протестировать с помощью Jasmine;

function reset() {    
app = 0;
den = 0;
$("#approved-count")[0].innerHTML = app;
$("#denied-count")[0].innerHTML = den;
showHideButtons(app, den);

}

Я могу запустить такой тест;

describe("Form is reset",
() => {
    it("counts are zero",
        () => {

     reset();                
     expect(document.getElementById("approved-count").innerHTML).toEqual("0");
     });

});

и это проходит.Однако функция loadData все еще выполняется и сообщает о несанкционированном исключении (как и должно быть).Мне не нужно вызывать loadData для проверки функции сброса, поэтому я хочу смоделировать функцию loadData.

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

describe("Form is reset",
() => {
    it("counts are zero",
        () => {

     spyOn(window, "loadData");
     reset();                
     expect(document.getElementById("approved-count").innerHTML).toEqual("0");
     });

});

мог бы это сделать, но loadData все равно вызывается.Очевидно, что я что-то упускаю или неправильно понимаю, как работают шпионы.

Как мне смоделировать loadData, чтобы фактическая функция не вызывалась?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...