【问题标题】:Karma test failed when I inject a ui-router resolve in a controller当我在控制器中注入 ui-router 解析时,Karma 测试失败
【发布时间】:2016-03-11 15:37:50
【问题描述】:

我一直在尝试测试我的控制器:

app.js

angular
    .module('MyModule', [
      'ui.router'
    ]);
angular
    .module('MyModule')
    .config(configFn);

  configFn.$inject = ['$stateProvider'];

  function configFn($stateProvider){

    $stateProvider
        .state('myState',{
          url:'state',
          views: {
            'main' : {
              templateUrl: 'src/views/view.html',
              controller: 'MyCtrl',
              controllerAs: 'ctrl',
              resolve: {
                DataResolve: ['MyService', function(MyService){
                  return MyService.getData();
                }]
              }

            }
          }
        });

controller.js

angular
    .module('MyModule')
    .controller('MyCtrl', Controller);

  Controller.$inject = ['DataResolve'];

  /* @ngInject */
  function Controller(DataResolve) {

    var vm = this;

    vm.data = DataResolve;

  }

我的规格

controller_spec.js

describe('Controller', function(){

  beforeEach(module('MyModule'));

  beforeEach(inject(function($controller){
    this.myCtrl = $controller('MyCtrl');

  }));

  it('Controller should be defined', function() {
    expect(this.myCtrl).toBeDefined();
  });

});

但是当测试运行时,我得到以下错误:

错误:[$injector:unpr] 未知提供程序:DataResolveProvider

我做错了什么?

【问题讨论】:

    标签: angularjs testing angular-ui-router jasmine karma-runner


    【解决方案1】:

    在您的beforeEach 中,添加对您的服务的引用:

    beforeEach(inject(function($controller, DataResolve){
        this.DataResolve = DataResolve;
        this.myCtrl = $controller('ParcelasController', {
              DataResolve: this.DataResolve;
        });
      }));
    

    【讨论】:

      猜你喜欢
      • 2016-11-13
      • 1970-01-01
      • 2014-09-28
      • 2016-02-18
      • 2015-05-29
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      相关资源
      最近更新 更多