Ich habe in einem Projekt gearbeitet und ich habe das UI-Router-Plugin verwendet. Wenn ich die Coverage-Ebene meines Codes überprüfe, sagt mein Coverage-Tool immer in der Auflösungsfunktion Callback, dass meine Tests niemals die Auflösungsfunktion ausführen.Unit Testing in UI-Router Auflösung Callback
Meine Frage:
Wie dieser Code zu testen werden soll?
Ein Beispiel für Code:
$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 Schließlich ich testen, ob mein Dienst, wenn ich in dem Zustand 'measures.users' Übergang genannt wurde.
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();
}
});
Ein ähnliches Beispiel in here