【问题标题】:ReferenceError: Can't find variable: module in angular testingReferenceError:找不到变量:角度测试中的模块
【发布时间】:2015-10-27 22:03:39
【问题描述】:

我正在尝试为我的 Angular 控制器编写测试,我正在使用 jasmine karmaangular-mocks,但不断收到错误 ReferenceError: Can't find variable: module

我有一点search,但我的凉亭里已经有了angular-mocks

我会在这里遗漏什么?

以下是我的代码:

#controller
angular.module('cook_book_ctrl', [])
.controller('cookBookCtrl', function($scope, CookBook, CookBookRecipesService){

  $scope.cookbookoptions = true;

  CookBook.list()
   .success(function(data){
     $scope.recipeList = data;
     CookBookRecipesService.loadCookBookRecipes($scope.recipeList);
   })
   .error(function(error){
   })
  });

#controller test
describe('CookBook controller spec', function(){
  var $httpBackend, $rootScope, createController, authRequestHandler

  beforeEach(module('cook_book_ctrl'));
})

#bower.json
{
  "name": "HelloIonic",
  "private": "true",
  "devDependencies": {
    "ionic": "driftyco/ionic-bower#1.0.0",
    "ionic-service-analytics": "master",
    "ionic-service-core": "~0.1.4",
    "angular-mocks": "1.3.13"
  },
  "dependencies": {
    "ng-cordova-oauth": "~0.1.2",
    "ng-tags-input": "~2.3.0",
    "angular": "~1.4.0",
    "underscore": "~1.8.3",
    "materialize": "~0.97.0"
  },
  "resolutions": {
    "angular": "~1.4.0"
  }
}


   beforeEach(module('cook_book_ctrl'));
})

更新:为清楚起见添加了屏幕截图

【问题讨论】:

    标签: javascript angularjs testing ionic-framework karma-jasmine


    【解决方案1】:

    除了通过 bower 安装 angular-mocks,记得在你的 karma 配置文件中添加对 angular-mocks.js 的引用,如下所示

    config.set({
    
        basePath: '../',
        port: '8000',
    
        files: [
          'bower_components/angular/angular.js',
          'bower_components/angular-mocks/angular-mocks.js',
          ...
        ]
    

    【讨论】:

    • 感谢您的回答,但是即使添加了angular-mock.js 文件,我仍然遇到同样的错误。为了清楚起见,我用屏幕截图更新了我的问题
    • 终于让它工作了@rebornix,感谢您的帮助。我不得不重新安装 jasmine, karmaangular-mocks ,这个链接也帮助了 ericnish.io/blog/set-up-jasmine-and-karma-for-angularjs
    【解决方案2】:

    在我的情况下,这也是 karma.conf.js 中文件路径的错误顺序。

    曾经:

    // list of files / patterns to load in the browser
    files: [
      'tests/*.test.js', // this should not be as first!
      'bower_components/angular/angular.min.js',
      'bower_components/angular-mocks/angular-mocks.js',
      'app/*.js',
    
    ],
    

    应该是:

    // list of files / patterns to load in the browser
    files: [
      'bower_components/angular/angular.min.js',
      'bower_components/angular-mocks/angular-mocks.js',
      'app/*.js',
      'tests/*.test.js' // now it's cool
    ],
    

    也许是显而易见的事情,也许不是? ;-)

    【讨论】:

    • 我遇到了同样的问题,这就是我的解决方案
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 2022-01-07
    相关资源
    最近更新 更多