当前位置: 代码迷 >> JavaScript >> 测试包装了外部功能的Angular工厂
  详细解决方案

测试包装了外部功能的Angular工厂

热度:93   发布时间:2023-06-13 12:29:14.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工厂的情况下进行测试?

您需要将configurable: true设置为configurable: true ,所以我想如果您想离开该工厂,答案是“否”。