0
這是我處理導航的簡單服務。 如果用戶按照當前狀態點擊「下一個」,他將被重定向到下一頁。如何在angularjs服務中測試一個函數
'use strict';
angular
.module('myAngularmodule')
.service('ButtonBarService',
function ($state, StatesConstants) {
return {
next: next
};
function next() {
switch ($state.current.name) {
case StatesConstants.LICENSE :
$state.go(StatesConstants.APPLICATIONGROUP);
break;
case StatesConstants.APPLICATIONGROUP :
$state.go(StatesConstants.ANALYSIS);
break;
default:
break;
}
}
});
這是我的規格文件,當我試圖測試失敗
'use strict';
describe('ButtonBarService', function() {
beforeEach(module('myAngularmodule'));
var ButtonBarService;
beforeEach(inject(function (_ButtonBarService_) {
ButtonBarService = _ButtonBarService_;
spyOn(ButtonBarService, 'next');
}));
describe('next()', function() {
it('should retrieve the current user', function() {
expect(ButtonBarService.next).toHaveBeenCalled();
});
});
});
失敗說「下一個預期的間諜已被稱爲」。 這個服務沒有後端的東西,我只是推廣它來處理buttonbar的東西。 我對前端頗爲陌生。我看到有$ http的答案,但無法理解。
您需要檢查內部函數在做什麼。您需要在每個函數之前添加'ButtonBarService.next()',然後檢查期望 –
您能否詳細回答這個問題。我已經在監視它。我需要做其他事嗎? – ankitd
你正在測試錯誤的東西,我的意思是說,你必須測試'$ state.go(StatesConstants.APPLICATIONGROUP);'在某些條件下...你所做的期望應該是其他服務或控制器的一部分 –