【发布时间】:2014-12-02 16:15:49
【问题描述】:
我一直在尝试为我的 Progress Service 编写一个单元测试,它管理流的不同状态(跳转到下一个未完成的步骤、将步骤标记为完成等) p>
我正在尝试配置 $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 来测试任意状态?
【问题讨论】:
标签: angularjs unit-testing angular-ui-router