angularjs - 当我在 Controller 中注入(inject) ui-router resolve 时,Karma 测试失败

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

我一直在尝试测试我的 Controller :

应用程序.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 <- DataResolve <- MyCtrl

我做错了什么?

最佳答案

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

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

关于angularjs - 当我在 Controller 中注入(inject) ui-router resolve 时,Karma 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35944242/

相关文章:

c++ - 单元测试处理退化的网络堆栈、文件损坏和其他缺陷

javascript - 为什么使用 npm 测试 firestore 规则时会出现错误 "connect ECONNREFUSED 127.0.0.1:8080"

angularjs - 改变状态什么也不做

javascript - Uncaught Error : [$injector:modulerr] Failed to instantiate module scheduleApp due to:

android - 移动应用性能测试工具

javascript - Angularjs: `$applyAsync` 与 `$apply` 带套接字

javascript - UIRouter - 动态更改 ui-view 属性

Angularjs UI Bootstrap 在打开时临时更改 URL 并在关闭时恢复为原始 URL

javascript - 使用 ng-repeat 打印 html 中的数组

angularjs - 从指令访问 Controller 范围