Моя угловая фабрика обертывает внешнюю функцию:
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
, поэтому я думаю, что ответ "нет", если вы хотите покинуть эту фабрику, как есть.