1
我一直在爲我的Progress Service編寫一個單元測試,它管理一個流程的不同狀態(跳轉到下一個未完成的步驟,將步驟標記爲完整等等)。 )
我想配置$ stateProvider來創建一組狀態,然後測試服務對它,但我無法得到狀態更改。當然,我想以一種孤立的方式來測試它,所以不依賴於我的應用程序中的現有狀態。
下面是簡單的單元測試:
ddescribe('Progress Steps Service', function() {
var sut, $rootScope, $state;
// holds ui.router and ProgressStepsService deps
beforeEach(module('Core'));
beforeEach(inject(
function(_$rootScope_, _$state_) {
$rootScope = _$rootScope_;
$state = _$state_;
}
));
beforeEach(inject(function(ProgressStepsService) {
// var steps = [...];
// sut = ProgressStepsService;
// sut.resolve(steps);
angular.module('TestModule', []).config(function($stateProvider) {
$stateProvider
.state('root', {url: '/root', abstract: true})
.state('root.step1', {url: '/step1'})
.state('root.step2', {url: '/step2'})
.state('root.step3', {url: '/step3'});
});
$state.go('root.step1');
$rootScope.digest();
}));
it('should init from the first step', function() {
expect($state.$current.name).toBe('root.step1');
});
});
我得到的錯誤是
Error: Could not resolve 'root.step1' from state ''
我拿''
是默認狀態,由於某種原因,配置狀態不通航。我可能錯過了一些非常基本的東西。
我應該如何配置$stateProvider
來測試任意狀態?