Hiện tại, tôi đã tạo một chỉ thị được đính kèm với biểu mẫu. Bất cứ khi nào form bị bẩn, tôi có một phương thức xác nhận bởi window.onbeforeunload bật lên khi cố gắng rời khỏi. Ngay bây giờ tôi đang cố gắng để viết một bài kiểm tra hoa nhài để đảm bảo window.onbeforeunload được gọi khi refresh/url thay đổi.Cách kích hoạt window.onbeforeunload trong kiểm tra hoa nhài
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';
}
};
}
};
}]);
Một phần của 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();
});
});
Khi tôi đã làm cháy, sự kiện onbeforeunload, nó sẽ phá vỡ các cuộc thử nghiệm hoa nhài và làm mới hoàn toàn trên trang web. –