Контрольные примеры жасмина для служб, которые возвращают объект DS.defineResource
Может ли кто-нибудь помочь мне в тестировании приведенного ниже кода. Моя функция выглядит следующим образом
function BiAlertsService(DS,companyUrlConfig) {
return DS.defineResource({
name: 'bi-alerts',
idAttribute: 'id',
endpoint: companyUrlConfig.companyApi + companyUrlConfig.companyBaseUrl+ companyUrlConfig.resources.alerts + '/' + '{companyId}/{empId}' + companyUrlConfig.resources.biAlerts,
deserialize: function(resourceConfig, data) {
var json = data.data;
return {
id : JSON.stringify(json),
data : json.data
};
}
});
}
Я смог инициализировать службу, но не смог протестировать функцию десериализации. Я пытался создать для нее шпион, но кое-кто не смог ее протестировать. Ниже приведен мой код Spec.
beforeEach(inject(function (biAlerts,_DS_, $q,$rootScope,_companyUrlConfig_) {
biAlerts = biAlerts;
$scope = $rootScope.$new();
companyUrlConfig=_companyUrlConfig_;
DS=_DS_;
deferred=$q.defer();
}));
DS.defineResource = jasmine.createSpy('').and.returnValue(deferred.promise);
заранее спасибо
1 ответ
Мы должны выполнить функцию десериализации при передаче объекта в метод defineResource, передав необходимые параметры, как показано ниже.
Пожалуйста, посмотрите на приведенный ниже код....
beforeEach(function () {
var mockDSService = function () {
return {
defineResource: function (obj) {
obj.deserialize(null, { data: {}});
}
}
};
// module configuration along with dependecies
var moduleName = 'trinet.shared.services.Names';
angular
.module(moduleName, [])
.service('DS', mockDSService)
.constant('profileUrlConfig', mockprofileUrlConfigConstant)
.service('Names', Names);
angular.mock.module(moduleName);
});
с этим фрагментом кода он автоматически выполняется и выполняет функцию десериализации