我试图对$ urlRouterProvider.otherwise进行单元测试,以便将url显示为用户输入的内容。但是,每次我在单元测试中使用$ location时,都会出现此错误
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)
这就是我在配置文件中的内容:
$urlRouterProvider
.when('', '/main')
.when('/', '/main')
.otherwise(function($injector){
$injector.get('$state').go('404', {}, { location: false });
});
这就是我的spec.js文件
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工作正常,并且goTo()
函数$ location似乎有效,那么为什么使用$location.url()
(或$location.path
)会抛出一个错误,询问$ httpBackend何时我没有使用$http.get()
请求?
答案 0 :(得分:0)
没有黑魔法,$templateCache
一直在Angular和第三方库中使用,如果使用得当,它应该按预期工作。
模板缓存条目为'public / template / 404.html'。
请求的模板是'public / template s /404.html'。