【发布时间】:2016-08-29 00:58:45
【问题描述】:
我一直在从事一个项目,并且一直在使用 ui-router 插件。 当我检查代码的覆盖级别时,总是在解析函数回调中,我的覆盖工具说我的测试从不执行解析函数。
我的问题:
应该如何测试这段代码?
代码示例:
$stateProvider
.state('measures.users', {
url: 'users',
views: {
'navbar': APP_SETTINGS.NAVBAR_SETTINGS,
'main': {
templateUrl: 'assets/views/users/users.html',
controller: 'UsersController',
controllerAs: 'users',
resolve: {
UsersResolve: ['UsersService', function(UsersService){
//My coverage tool never pass in here.
//I need testing this area but i dont know what should be test
return UsersService.getUsers();
}]
}
}
}
})
编辑 最后,我测试当我转换到状态“measures.users”时我的服务是否被调用。
describe('State check', function(){
var state, rootScope, UsersService;
beforeEach(module('exampleApp'));
beforeEach(inject(eachSpecSetup));
function eachSpecSetup($state, $rootScope, $controller,_UsersService_){
state = $state;
UsersService = _UsersService_;
rootScope = $rootScope;
}
it('should be call a UsersService.getUsers to resolve the array to state users', spec1);
function spec1(){
spyOn(UsersService, 'getUsers');
state.go('measures.users');
rootScope.$digest();
expect(UsersService.getUsers).toHaveBeenCalled();
}
});
here中的类似示例
【问题讨论】:
标签: angularjs angular-ui-router jasmine istanbul