我正在使用UI路由器并定义站点范围的解析。
$stateProvider
.state('site', {
abstract: true,
resolve: {
exampleResolve: function(MyApiService) {
return MyApiService.get();
}
},
views: {
'site': {
template: '<ui-view/>'
}
}
})
但是,我有一个自定义指令,当我对它进行单元测试时,我得到'错误:意外请求:GET / api / example'(这是'MyApiService.get())。
it('should do something', function() {
scope.example.data = '123';
scope.$digest();
element.triggerHandler('blur');
console.log(element);
})
以某种方式抛出Error: Unexpected request: GET /api/example
答案 0 :(得分:1)
尝试模拟 MyApiService ,以便不应将调用委托给实际实现。
it( 'should do something', inject( function( MyApiService ) {
spyOn( MyApiService, 'get' ).and.callFake( function() {
return true;
} );
scope.example.data = '123';
scope.$digest();
element.triggerHandler( 'blur' );
console.log( element );} ) );
答案 1 :(得分:0)
您需要在测试用例中实例化服务,如下所示。
//you need to inject dependencies first
beforeEach(inject(function(MyApiService) {
MyApiService.get();
}));
答案 2 :(得分:-1)
try to mention <ui-view/> in HTML
//HTML
<body>
<div ui-view="site"></div>
</body>
//Javascript
$stateProvider
.state('sites',{
views: {
'site': {
templateUrl: 'sites-site.html',
controller: function($scope){ ... controller stuff just for site view ..}
}
}
})