beforeEach(module('Module1', function($provide) {
$provide.value('$window', {
alert: jasmine.createSpy('alert')
});
}));
factory('SampleService', [function () {
var deregistrationFunctions = {};
return {
register: function(id, deregisterFunction) {
deregistrationFunctions[id] = deregisterFunction;
},
deregister: function(id) {
if (angular.isDefined(deregistrationFunctions[id])
&& angular.isFunction(deregistrationFunctions[id])) {
deregistrationFunctions[id]();
}
}
// любые методы манипуляции с объектом
}
}]
Можно написать свой десерилизатор, который всю эту логику скроет в себе, а более высокоуровневый код будет работать через маппер как ему привычно.