【问题标题】:Jasmine test:error: [$injector:unpr] Unknown provider:Jasmine 测试:错误:[$injector:unpr] 未知提供者:
【发布时间】:2017-01-23 20:59:43
【问题描述】:

我有以下代码:

angular.module('ps.workspaces').config(['$provide', function($provide) {
  $provide.factory('workspacesNonCompliance', ['$filter', function($filter) {
    return {
      NonComplianceReasons: [
        {name: $filter('translate')('NONCOMPLIANT.ALL'), noncompliant_properties: '' },
        {name: $filter('translate')('NONCOMPLIANT.JAIL_BREAK_DETECTION'), noncompliant_properties: 'jail_break_detection' },
        {name: $filter('translate')('NONCOMPLIANT.COMPLIANCE_ROOTED_DETECTION'), noncompliant_properties: 'compliance_rooted_detection' },
        {name: $filter('translate')('NONCOMPLIANT.COMPLIANCE_USB_DEBUGGING'), noncompliant_properties: 'compliance_usb_debugging'},
        {name: $filter('translate')('NONCOMPLIANT.POLICY_EXPIRED'), noncompliant_properties: 'policy_expired'}
      ]
    };
  }]);
}]);

我的模块是:

angular.module('ps.workspaces', [
  'ps.workspaces.workspacesDirective',
  'ps.workspaces.workspacesFactories'
]);

我的测试是:

describe('Tests for workspacesNonCompliance /', function() {
  var workspacesNonCompliance,
      $provider,
      $filter;

  // beforeEach(module('ps.workspaces'));
  // beforeEach(module('ps.workspaces.workspacesDirective'));
  // beforeEach(module('ps.workspaces.workspacesFactories'));

  beforeEach(function(){
    angular.module('ps.workspaces', [
      'ps.workspaces.workspacesDirective',
      'ps.workspaces.workspacesFactories'
    ]);
 });

  describe('workspacesNonCompliance is array of noncompliance reasons /', function () {
    beforeEach(function () {
      inject(function ($injector) {
        workspacesNonCompliance = $injector.get('workspacesNonCompliance');
        $filter = $injector.get('$filter');

      });
    });

    it('workspacesNonCompliance has array of noncompliance reasons', function () {
      console.log('*******  workspacesNonCompliance ', workspacesNonCompliance);
      expect(workspacesNonCompliance.NonComplianceReasons).toContain({name: $filter('translate')('NONCOMPLIANT.ALL'), noncompliant_properties: '' });
    });

  });
});

运行测试并收到错误消息:

错误:[$injector:unpr] 未知提供程序:workspacesNonComplianceProvider http://errors.angularjs.org/1.3.18/$injector/unpr?p0=workspacesNonComplianceProvider%20%3C-%20workspacesNonCompliance 在 /Users/joannepham/git/pws/console-ui/bower_components/angular/angular.js:63:12 在 /Users/joannepham/git/pws/console-ui/bower_components/angular/angular.js:4031:19

无法弄清楚在这种情况下需要解决什么问题。请帮忙

【问题讨论】:

    标签: angularjs jasmine karma-jasmine


    【解决方案1】:

    不确定ps.workspaces.workspacesDirectiveps.workspaces.workspacesFactories 有什么。但这里的主要问题是,workspacesNonCompliance 没有正确注入。这就是为什么它以 undefined 的形式出现并因此出现错误。

    你的测试文件应该是这样的:

    describe('Tests for workspacesNonCompliance /', function() {
      var workspacesNonCompliance, $provider, $filter;
    
      beforeEach(function() {
        module('ps.workspaces');
      });
    
      beforeEach(inject(function(_workspacesNonCompliance_) {
        workspacesNonCompliance = _workspacesNonCompliance_;
      }));
    
      describe('workspacesNonCompliance', function() {
        it('should have workspacesNonCompliance as defined', function() {
          expect(workspacesNonCompliance).toBeDefined();
        });
      });
    });

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-09-29
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 2016-03-26
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多