0

我正在尝试使用 Jasmine 编写一个简单的测试。测试检查是否$scope.testFlag设置为 false。

这是我的测试代码

describe('Abc Controller', function() {
  var $scope = null;
  var ctrl = null;

  //you need to indicate your module in a test
  beforeEach(module('myApp'));
  beforeEach(inject(function($rootScope, $controller) {
    $scope = $rootScope.$new();
    ctrl = $controller('abcController', {
      $scope: $scope
    });
  }));


  // test 1
  it('testFlag should be set to False', function() {
    expect( $scope.testFlag).toEqual(false);
  });


});

但由于某种原因,我收到此错误:

Error: Unknown provider: ConfigProvider <- Config <- collectionMetaFactory

这是我的应用程序的 app.js 的样子,我包含在其中testRunner.html

var app = angular.module('myApp') 
    app.constant('Config',
    {
        baseURL : serviceURL,
        httpTimeout : 3600000 // 1 minute
    });
    app.config(function($logProvider) {
        $logProvider.debugEnabled(true);
    });

我错过了什么?

这是控制器的片段

app.controller('abcController', function ($scope, $log,abcFactory, Config) {

        $scope.testFlag = false;

       // more code follows

});

如果您需要查看更多应用程序代码(如工厂、服务和控制器),请告诉我

4

1 回答 1

0

您没有为您的测试提供Config,因此它无法识别是什么Config,这就是您收到此错误的原因。

一个解决方案是Config使用$provide模块注入您的测试。就是这样:

describe('Abc Controller', function() {
  var $scope = null;
  var ctrl = null;
  var Config = {
     baseURL : 'someURL',
     httpTimeout : 3600000 // 1 minute
  };

  beforeEach(function(){
        beforeEach(module('myApp'));
        module(function (_$provide_) {
            $provide = _$provide_;
            $provide.value('Config', Config);
        });
  });

  //you need to indicate your module in a test

  beforeEach(inject(function($rootScope, $controller) {
    $scope = $rootScope.$new();
    ctrl = $controller('abcController', {
      $scope: $scope
    });
  }));


  // test 1
  it('testFlag should be set to False', function() {
    expect( $scope.testFlag).toEqual(false);
  });
});

这应该成功运行测试。

希望这可以帮助其他面临类似问题的人。

于 2016-06-07T05:48:24.053 回答