Тестирование попробовать / поймать в Жасмин не работает - PullRequest
0 голосов
/ 24 марта 2020

У меня есть этот фрагмент кода в AngularJS, который я пытаюсь проверить:

var _savePendingChanges = function() {
  try {
    $rootScope.$broadcast('externalSave');
  } catch (e) {
    // Sometimes, AngularJS throws a "Cannot read property $$nextSibling of
    // null" error. To get around this we must use $apply().
    $rootScope.$apply(function() {
      $rootScope.$broadcast('externalSave');
    });
  }
}

Вот тест, который я написал до сих пор, и он не работает (он выдает ошибка от errorMessage и ошибка Жасмин: Error: Expected function to throw an Error.):

fit('should save pending changes', function() {
    var errorMessage = 'Cannot read property $$nextSibling of null'; 
    spyOn($rootScope, '$broadcast').and.throwError(errorMessage);
    expect(function() {
      RouterService.savePendingChanges();
    }).toThrowError(errorMessage);
  });

Кто-нибудь может мне помочь? Спасибо!

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете проверить, что трансляция вызывается дважды:

fit('should save pending changes', function () {
    var errorMessage = 'Cannot read property $$nextSibling of null';
    var broadcastSpy = spyOn($rootScope, '$broadcast').and.throwError(errorMessage);

    RouterService.savePendingChanges();

    expect(broadcastSpy).toHaveBeenCalledTimes(2);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...