Как мы можем проверить условия внутри $get в клиентском провайдере, я хотел бы проверить, есть ли еще условия в showSpinner.
Я включу свой spinnerServe в конфигурации, используя
spinnerServiceProvider.spinnerEnabled(true)
и переключение моего счетчика в контроллере с помощью
spinnerService.showSpinner(true) or spinnerService.showSpinner(false)
angular.module('providerModule', []).provider('spinnerService', [
function() {
var enabled = true;
return {
spinnerEnabled: function(setting) {
if (angular.isDefined(setting)) {
enabled = setting;
return this;
} else {
return enabled;
}
},
$get: function($injector) {
return {
showSpinner: function(option) {
if (enabled) {
if(option){
angular.element(document.body).append('<div id="spinner"><div class="modal-backdrop fade in"></div><div class="load5"><div class="loader" ></div></div></div>');
}
else{
angular.element(document.querySelector('#spinner')).remove();
}
}
}
}
}
}
}
]);
Я смог проверить, был ли вызван showSpinner, но как проверить, входит ли он, если и еще блокируется правильно. Ниже находится spec.js
describe('Spinner Provider', function(){
var spinnerServiceObj;
beforeEach(module('providerModule'));
describe('testing spinner', function(){
beforeEach(function() {
inject(function(_spinnerService_,_$rootScope_) {
spinnerServiceObj = _spinnerService_;
$rootScope = _$rootScope_;
$rootScope.showSpinner = jasmine.createSpy(spinnerServiceObj.showSpinner(true))
});
});
it('Should test showSpinner with true and false', function() {
expect($rootScope.showSpinner ).toHaveBeenCalled();
});
})
})