У меня есть приложение Angularjs, которое использует простое подтверждение javascript перед выполнением некоторых действий.
Контроллер:
function TokenController($scope) {
$scope.token = 'sampleToken';
$scope.newToken = function() {
if (confirm("Are you sure you want to change the token?") == true) {
$scope.token = 'modifiedToken';
}
};
}
Вид:
<div id="tokenDiv">
Token:{{token}} <button ng-click="newToken()">New Token</button>
</div>
Теперь я хочу провести сквозной тест, чтобы проверить, правильно ли заменяется токен в представлении. Как я могу перехватить вызов javascript.confirm()
, чтобы он не остановил выполнение теста?
Тестовое задание:
it('should be able to generate new token', function () {
var oldValues = element('#tokenDiv').text();
element('button[ng-click="newToken()"]').click(); // Here the javascript confirm box pops up.
expect(element('#tokenDiv').text()).not.toBe(oldValues);
});
До сих пор я пытался переопределить функцию window.confirm
, но затем фактический вызов жалуется, что она не определена.
Я также хотел настроить шпиона Жасмин на window.confirm
, но при следующем синтаксисе spyOn(window, 'confirm');
это дает мне ошибку, говорящую, что вы не можете шпионить за null
.
Как мне сделать такой тест?