UI路由器解析在Angular

时间:2015-07-13 19:14:57

标签: angularjs unit-testing angular-ui-router

我正在使用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

3 个答案:

答案 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 ..}     

  }
}
})