Подтвердить что ты не робот

Тестирование оповещений javascript с помощью Jasmine

Я пишу несколько тестов Jasmine для некоторого старого javascript, который выдает предупреждение или подтверждение в некоторых точках кода.

В тот момент, когда появляется предупреждение, он приостанавливает выполнение в браузере, требуя, чтобы я нажал ok перед продолжением.

Я уверен, что я что-то упустил, но есть способ подделать предупреждение?

Еще лучше узнать, какое сообщение было для предупреждения?

Спасибо за вашу помощь.

4b9b3361

Ответ 1

Вы просто создаете шпиона, удивительно с помощью createSpy(), чтобы высмеять функцию, содержащую предупреждение. Итак, вы можете сделать что-то вроде этого:

beforeEach(function() {
    functionWithAlert = jasmine.createSpy("functionWithAlert");    
    functionWithAlert("called as usual");
});

Вы также можете сделать это, чтобы вернуть что-то

oldFunctionWithAlert = jasmine.createSpy("oldFunctionWithAlert() spy").andCallFake(function() {
    console.log("Doing some testing");
    return "Test";
});

С другой стороны, я предлагаю вам заменить оповещение, если возможно, менее разрушительными альтернативами. Там есть множество опций, например диалоговое окно JQuery UI.

Ответ 2

spyOn(window, 'alert');
. . . 
expect(window.alert).toHaveBeenCalledWith('a message');

Ответ 3

var oldalert = alert;
alert = jasmine.createSpy();
// do something
expect(alert).toHaveBeenCalledWith('message')
alert = oldalert

Ответ 4

Другой способ - сделать это в spec helper.

window.alert = function(){return;};