我們如何測試客戶提供商中$ get的條件,我想在showSpinner下測試其他條件。單元測試自定義提供商
我會用
spinnerServiceProvider.spinnerEnabled(true)
是使能在配置我spinnerSerive和使用
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是否已經被稱爲觸發我的飛旋的控制器,但如何來測試它是輸入if和else塊是否正確。下面是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();
});
})
})
您基本上需要'/ *測試邏輯來顯示Spinner * /'和'/ *測試邏輯來隱藏Spinner * /'。沒有確切的代碼就無法回答這個問題。 – estus
@estus,我已經添加完整的代碼 – Naresh217