1
私はプロジェクトで働いており、私はui-routerプラグインを使用しています。 私のコードのカバレッジレベルを調べると、常にresolve関数のコールバックでカバレッジツールは私のテストで決してresolve関数を実行しないと言います。ユニットテストの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();
}]
}
}
}
})
EDIT 私は状態 '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();
}
});