Почему мой вызов ng-blur может работать правильно, но не проходит модульный тест? Jasmine

#javascript #html #angularjs #unit-testing #jasmine

#javascript #HTML #angularjs #модульное тестирование #jasmine

Вопрос:

Я протестировал свой код на сервере, и он вызовет pinNameEditBlur корректно, когда я сделаю размытие текстового поля, но здесь он не пройдет модульный тест. Ошибка модульного теста pinNameEditBlur is не вызывается. Я не знаю, связано ли это с тем, что я использовал неправильный способ эмуляции blur() .

HTML:

 <input type="text" id="edit-pin-name-text-{{pin.id}}" ng-model="editedPinNames[pin.id]" ng-blur="pinNameEditBlur($event, pin)" ng-keydown="pinNameChanged($event, pin)">
  

Тест:

 describe("ng-blur", function(){
      it("should call function pinNameEditBlur when the text box is blurred", function(){
          var element = document.createElement('div');
          document.getElementById = jasmine.createSpy('HTML Element').and.returnValue(element);
          var elementId = "edit-pin-name-text-2";
          spyOn(scope, 'pinNameEditBlur');
          document.getElementById(elementId).blur();
          expect(element.classList.contains('blur'));
          expect(scope.pinNameEditBlur).toHaveBeenCalled();
});
  

Ошибка теста:

 Mozilla/5.0 (win32) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/11.12.0 PinTable ng-blur should call function pinNameEditBlur when the text box is blurred FAILED
        Error: Expected spy pinNameEditBlur to have been called.
            at <Jasmine>
            at UserContext.<anonymous> (src/test/karma/specs/PinTable.spec.js:276:41)
            at <Jasmine>