Тестирование оповещений javascript с помощью Jasmine
Я пишу несколько тестов Jasmine для некоторого старого javascript, который выдает предупреждение или подтверждение в некоторых точках кода.
В тот момент, когда появляется предупреждение, он приостанавливает выполнение в браузере, требуя, чтобы я нажал ok перед продолжением.
Я уверен, что я что-то упустил, но есть способ подделать предупреждение?
Еще лучше узнать, какое сообщение было для предупреждения?
Спасибо за вашу помощь.
Ответы
Ответ 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;};