问题描述
我的角度工厂包装了外部函数:
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
工厂的情况下进行测试?
1楼
您需要将configurable: true
设置为configurable: true
,所以我想如果您想离开该工厂,答案是“否”。