我的角度工厂包装了外部功能:
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;
});
karma-jasmine测试:
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
工厂的情况下进行测试?
答案 0 :(得分:2)
你需要设置configurable: true
,所以如果你想按原样离开工厂,我想答案是'不'。