Obecnie stworzyłem dyrektywę dołączoną do formularza. Za każdym razem, gdy formularz jest brudny, mam modal potwierdzenia przez window.onbeforeunload pop-up, gdy próbuje opuścić. Teraz próbuję napisać test jaśminowy, aby upewnić się, że window.onbeforeunload zostanie wywołany po zmianie odświeżenia/url.Jak wyzwolić window.onbeforeunload w jaśminowym teście
var app = angular.directive('app');
app.directive('dialog',[$window, function() {
return {
restrict: 'A',
require: 'form',
link: function(scope, element, attrs, formCtrl) {
$window.onbeforeunload = function() {
if(formCtrl.$dirty) {
return 'Are you sure you want to leave this form';
}
};
}
};
}]);
Część Jasmine Spec
beforeEach(inject(function(_$rootScope_,_$state_,_$window_) {
$rootScope = _$rootScope_;
$state = _$state_;
$window = _$window_;
spyOn($window, 'onbeforeunload')
}));
describe('Listen for window prompt', function() {
it('should be called on url/refresh change', function() {
window.location.reload();
expect($window.onbeforeunload).toHaveBeenCalled();
});
});
Kiedy zrobiłem ognia zdarzenie onbeforeunload, by to przerwać testy jaśminu i zrobić pełne odświeżanie na stronie internetowej. –