Тестирование Angular Factory, который оборачивает внешнюю функцию

0

Моя угловая фабрика обертывает внешнюю функцию:

var External = function(){};

angular.module('app', [])
  .factory('ExternalWrap', function() {
    Object.defineProperty(External.prototype, '$id', {
      get: function() {
        return this.$$id === undefined || this.$$id === null ? this.id : this.$$id;
      },
      set: function(value) {
        this.$$id = value;
      },
      configurable: false,
      enumerable: false
    });

    return External;
  });

тесты карма-жасмина:

describe('test', function () {
  beforeEach(module('app'));

  it('should work', function() {
    inject(function(ExternalWrap) {
      expect(ExternalWrap).toBeDefined();
    });
  });

  it('should work too', function() {
    inject(function(ExternalWrap) {
      expect(ExternalWrap).toBeDefined();
    });
  });
});

Во втором тесте я получаю сообщение об ошибке TypeError: Cannot redefine property: $id. Можно ли протестировать без изменения фабрики ExternalWrap?

Теги:
unit-testing
testing
karma-jasmine

1 ответ

2

Вам нужно настроить configurable: true, поэтому я думаю, что ответ "нет", если вы хотите покинуть эту фабрику, как есть.

  • 0
    Спасибо. Я ожидаю, что можно настроить карму так, чтобы она обновляла страницу перед каждым тестом?
  • 0
    Точно сказать не могу. Я бы порекомендовал вам задать новый вопрос, касающийся проблем с конфигурацией Karma.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню