Ich versuche Einheitstest $ urlRouterProvider.otherwise, um die URL als was auch immer der Benutzer eingegeben zu zeigen. jedes Mal, wenn ich $ Lage in meinem Unit-Test verwenden, ich diesen Fehler jedoch
path default rerouting should go to error upon bad rerouting url FAILED
Error: Unexpected request: GET public/templates/404.html
No more request expected
at $httpBackend (/Users/project/lib/angular-mocks.js:1207:9)
Dies ist, was ich in meiner Config-Datei habe:
$urlRouterProvider
.when('', '/main')
.when('/', '/main')
.otherwise(function($injector){
$injector.get('$state').go('404', {}, { location: false });
});
Und das ist, was ich als mein spec Js-Datei
describe('path', function(){
var $rootScope, $state, $location, $injector, $templateCache, state;
beforeEach(angular.mock.module('app'));
beforeEach(angular.mock.inject(function(_$rootScope_, _$state_, _$injector_, _$location_, _$templateCache_, _$httpBackend_){
$rootScope = _$rootScope_;
$state = _$state_;
$injector = _$injector_;
$location = _$location_;
$templateCache = _$templateCache_;
$httpBackend = _$httpBackend_;
$templateCache.put('public/templates/main.html', '');
$templateCache.put('public/template/audio.html', '');
$templateCache.put('public/template/404.html', '');
}));
describe('default rerouting', function(){
it('should go to error upon bad url', function(){
var badUrl = '/badUrlToTest';
goTo(badUrl);
expect($state.current.name).toEqual('404');
expect($location.url()).toBe(badUrl);
});
});
function goTo(url){
$location.url(url);
$rootScope.$digest();
}
})
$ state mit funktioniert gut, und in der goTo()
Funktion $ Lage scheint zu funktionieren, also warum $location.url()
tut (oder $location.path
) einen Fehler ein Wurf sking über $ httpBackend, wenn ich keine $http.get()
Anfrage verwende?