jasmine matcher函数未在angularjs/karma单元测试中加载

jasmine matcher函数未在angularjs/karma单元测试中加载,angularjs,gruntjs,jasmine,bower,karma-jasmine,Angularjs,Gruntjs,Jasmine,Bower,Karma Jasmine,我正在为angularJs应用程序编写单元测试,我正在使用jasmine框架的karma测试运行程序 我正在测试一个应该从firebase中提取对象的函数,我已经安装了jasmine expect和karma jasmine matchers插件 我的职能如下: describe('Controller: QuizCtrl', function () { // load the controller's module beforeEach(module('geafApp'));

我正在为angularJs应用程序编写单元测试,我正在使用jasmine框架的karma测试运行程序

我正在测试一个应该从firebase中提取对象的函数,我已经安装了
jasmine expect
karma jasmine matchers
插件

我的职能如下:

describe('Controller: QuizCtrl', function () {

  // load the controller's module
  beforeEach(module('geafApp'));

  var QuizCtrl,
    scope;

  // Initialize the controller and a mock scope
  beforeEach(inject(function ($controller, $rootScope) {
    scope = $rootScope.$new();
    QuizCtrl = $controller('QuizCtrl', {
      $scope: scope
    });
  }));

  it('should contain answers object from firebase', function () {
    expect(scope.questions).toBeNonEmptyObject();
  });
  });
{
  "name": "geaf",
  "version": "0.0.1",
  "description": "German Embassy Quiz",
  "dependencies": {},
  "repository": {},
  "devDependencies": {
    "bower": "^1.3.1",
    "chalk": "^0.4.0",
    "grunt": "^0.4.5",
    "grunt-autoprefixer": "^2.0.0",
    "grunt-concurrent": "^1.0.0",
    "grunt-contrib-clean": "^0.6.0",
    "grunt-contrib-compass": "^1.0.0",
    "grunt-contrib-concat": "^0.5.0",
    "grunt-contrib-connect": "^0.9.0",
    "grunt-contrib-copy": "^0.7.0",
    "grunt-contrib-cssmin": "^0.12.0",
    "grunt-contrib-htmlmin": "^0.4.0",
    "grunt-contrib-imagemin": "^0.9.2",
    "grunt-contrib-jshint": "^0.11.0",
    "grunt-contrib-uglify": "^0.7.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-filerev": "^2.1.2",
    "grunt-google-cdn": "^0.4.3",
    "grunt-karma": "^0.12.0",
    "grunt-newer": "^1.1.0",
    "grunt-ng-annotate": "^0.9.2",
    "grunt-svgmin": "^2.0.0",
    "grunt-usemin": "^3.0.0",
    "grunt-wiredep": "^2.0.0",
    "gulp": "^3.9.0",
    "gulp-bower": "0.0.10",
    "gulp-sass": "^2.0.4",
    "http-server": "^0.6.1",
    "jasmine-core": "^2.3.4",
    "jasmine-expect": "^1.22.3",
    "jshint-stylish": "^1.0.0",
    "karma": "^0.13.3",
    "karma-chrome-launcher": "^0.2.0",
    "karma-firefox-launcher": "^0.1.6",
    "karma-jasmine": "^0.3.6",
    "karma-jasmine-matchers": "^2.0.0-beta1",
    "karma-junit-reporter": "^0.3.3",
    "karma-ng-html2js-preprocessor": "^0.1.2",
    "karma-ng-scenario": "^0.1.0",
    "karma-phantomjs-launcher": "^0.2.0",
    "load-grunt-tasks": "^3.1.0",
    "protractor": "~0.20.1",
    "shelljs": "^0.2.6",
    "time-grunt": "^1.0.0"
  },
  "scripts": {
    "postinstall": "bower install",
    "prestart": "npm install",
    "start": "http-server -a localhost -p 8000",
    "pretest": "npm install",
    "test": "karma start karma.conf.js",
    "test-single-run": "karma start karma.conf.js  --single-run",
    "preupdate-webdriver": "npm install",
    "update-webdriver": "webdriver-manager update",
    "preprotractor": "npm run update-webdriver",
    "protractor": "protractor e2e-tests/protractor-conf.js",
    "update-index-async": "node -e \"require('shelljs/global'); sed('-i', /\\/\\/@@NG_LOADER_START@@[\\s\\S]*\\/\\/@@NG_LOADER_END@@/, '//@@NG_LOADER_START@@\\n' + cat('app/bower_components/angular-loader/angular-loader.min.js') + '\\n//@@NG_LOADER_END@@', 'app/index-async.html');\""
  },
  "engines": {
    "node": ">=0.10.0"
  }
}
然后我运行:

呼噜报应

运行测试,但失败并出现以下错误:

My package.json如下所示:

describe('Controller: QuizCtrl', function () {

  // load the controller's module
  beforeEach(module('geafApp'));

  var QuizCtrl,
    scope;

  // Initialize the controller and a mock scope
  beforeEach(inject(function ($controller, $rootScope) {
    scope = $rootScope.$new();
    QuizCtrl = $controller('QuizCtrl', {
      $scope: scope
    });
  }));

  it('should contain answers object from firebase', function () {
    expect(scope.questions).toBeNonEmptyObject();
  });
  });
{
  "name": "geaf",
  "version": "0.0.1",
  "description": "German Embassy Quiz",
  "dependencies": {},
  "repository": {},
  "devDependencies": {
    "bower": "^1.3.1",
    "chalk": "^0.4.0",
    "grunt": "^0.4.5",
    "grunt-autoprefixer": "^2.0.0",
    "grunt-concurrent": "^1.0.0",
    "grunt-contrib-clean": "^0.6.0",
    "grunt-contrib-compass": "^1.0.0",
    "grunt-contrib-concat": "^0.5.0",
    "grunt-contrib-connect": "^0.9.0",
    "grunt-contrib-copy": "^0.7.0",
    "grunt-contrib-cssmin": "^0.12.0",
    "grunt-contrib-htmlmin": "^0.4.0",
    "grunt-contrib-imagemin": "^0.9.2",
    "grunt-contrib-jshint": "^0.11.0",
    "grunt-contrib-uglify": "^0.7.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-filerev": "^2.1.2",
    "grunt-google-cdn": "^0.4.3",
    "grunt-karma": "^0.12.0",
    "grunt-newer": "^1.1.0",
    "grunt-ng-annotate": "^0.9.2",
    "grunt-svgmin": "^2.0.0",
    "grunt-usemin": "^3.0.0",
    "grunt-wiredep": "^2.0.0",
    "gulp": "^3.9.0",
    "gulp-bower": "0.0.10",
    "gulp-sass": "^2.0.4",
    "http-server": "^0.6.1",
    "jasmine-core": "^2.3.4",
    "jasmine-expect": "^1.22.3",
    "jshint-stylish": "^1.0.0",
    "karma": "^0.13.3",
    "karma-chrome-launcher": "^0.2.0",
    "karma-firefox-launcher": "^0.1.6",
    "karma-jasmine": "^0.3.6",
    "karma-jasmine-matchers": "^2.0.0-beta1",
    "karma-junit-reporter": "^0.3.3",
    "karma-ng-html2js-preprocessor": "^0.1.2",
    "karma-ng-scenario": "^0.1.0",
    "karma-phantomjs-launcher": "^0.2.0",
    "load-grunt-tasks": "^3.1.0",
    "protractor": "~0.20.1",
    "shelljs": "^0.2.6",
    "time-grunt": "^1.0.0"
  },
  "scripts": {
    "postinstall": "bower install",
    "prestart": "npm install",
    "start": "http-server -a localhost -p 8000",
    "pretest": "npm install",
    "test": "karma start karma.conf.js",
    "test-single-run": "karma start karma.conf.js  --single-run",
    "preupdate-webdriver": "npm install",
    "update-webdriver": "webdriver-manager update",
    "preprotractor": "npm run update-webdriver",
    "protractor": "protractor e2e-tests/protractor-conf.js",
    "update-index-async": "node -e \"require('shelljs/global'); sed('-i', /\\/\\/@@NG_LOADER_START@@[\\s\\S]*\\/\\/@@NG_LOADER_END@@/, '//@@NG_LOADER_START@@\\n' + cat('app/bower_components/angular-loader/angular-loader.min.js') + '\\n//@@NG_LOADER_END@@', 'app/index-async.html');\""
  },
  "engines": {
    "node": ">=0.10.0"
  }
}
My karma.conf.js按如下方式加载插件:

describe('Controller: QuizCtrl', function () {

  // load the controller's module
  beforeEach(module('geafApp'));

  var QuizCtrl,
    scope;

  // Initialize the controller and a mock scope
  beforeEach(inject(function ($controller, $rootScope) {
    scope = $rootScope.$new();
    QuizCtrl = $controller('QuizCtrl', {
      $scope: scope
    });
  }));

  it('should contain answers object from firebase', function () {
    expect(scope.questions).toBeNonEmptyObject();
  });
  });
{
  "name": "geaf",
  "version": "0.0.1",
  "description": "German Embassy Quiz",
  "dependencies": {},
  "repository": {},
  "devDependencies": {
    "bower": "^1.3.1",
    "chalk": "^0.4.0",
    "grunt": "^0.4.5",
    "grunt-autoprefixer": "^2.0.0",
    "grunt-concurrent": "^1.0.0",
    "grunt-contrib-clean": "^0.6.0",
    "grunt-contrib-compass": "^1.0.0",
    "grunt-contrib-concat": "^0.5.0",
    "grunt-contrib-connect": "^0.9.0",
    "grunt-contrib-copy": "^0.7.0",
    "grunt-contrib-cssmin": "^0.12.0",
    "grunt-contrib-htmlmin": "^0.4.0",
    "grunt-contrib-imagemin": "^0.9.2",
    "grunt-contrib-jshint": "^0.11.0",
    "grunt-contrib-uglify": "^0.7.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-filerev": "^2.1.2",
    "grunt-google-cdn": "^0.4.3",
    "grunt-karma": "^0.12.0",
    "grunt-newer": "^1.1.0",
    "grunt-ng-annotate": "^0.9.2",
    "grunt-svgmin": "^2.0.0",
    "grunt-usemin": "^3.0.0",
    "grunt-wiredep": "^2.0.0",
    "gulp": "^3.9.0",
    "gulp-bower": "0.0.10",
    "gulp-sass": "^2.0.4",
    "http-server": "^0.6.1",
    "jasmine-core": "^2.3.4",
    "jasmine-expect": "^1.22.3",
    "jshint-stylish": "^1.0.0",
    "karma": "^0.13.3",
    "karma-chrome-launcher": "^0.2.0",
    "karma-firefox-launcher": "^0.1.6",
    "karma-jasmine": "^0.3.6",
    "karma-jasmine-matchers": "^2.0.0-beta1",
    "karma-junit-reporter": "^0.3.3",
    "karma-ng-html2js-preprocessor": "^0.1.2",
    "karma-ng-scenario": "^0.1.0",
    "karma-phantomjs-launcher": "^0.2.0",
    "load-grunt-tasks": "^3.1.0",
    "protractor": "~0.20.1",
    "shelljs": "^0.2.6",
    "time-grunt": "^1.0.0"
  },
  "scripts": {
    "postinstall": "bower install",
    "prestart": "npm install",
    "start": "http-server -a localhost -p 8000",
    "pretest": "npm install",
    "test": "karma start karma.conf.js",
    "test-single-run": "karma start karma.conf.js  --single-run",
    "preupdate-webdriver": "npm install",
    "update-webdriver": "webdriver-manager update",
    "preprotractor": "npm run update-webdriver",
    "protractor": "protractor e2e-tests/protractor-conf.js",
    "update-index-async": "node -e \"require('shelljs/global'); sed('-i', /\\/\\/@@NG_LOADER_START@@[\\s\\S]*\\/\\/@@NG_LOADER_END@@/, '//@@NG_LOADER_START@@\\n' + cat('app/bower_components/angular-loader/angular-loader.min.js') + '\\n//@@NG_LOADER_END@@', 'app/index-async.html');\""
  },
  "engines": {
    "node": ">=0.10.0"
  }
}
插件:[ “卡玛铬发射器”, “karma firefox启动器”, “因果报应茉莉花”, “卡玛幻影发射器”, “karma junit记者”, “因果报应茉莉配对者” ],

我已经运行了
npm安装
bower安装
,因此这些函数应该可以正确加载,但似乎无法正常运行


非常感谢您的帮助,因为这是我第一次为他们编写angular应用程序和单元测试。

您还必须添加
jasmine matchers
作为karma.conf.js的框架:

是对茉莉花配对者官方Karma配置示例的参考


另外,如果您没有任何插件,那么只需指定一个框架就足够了。

您是否已将
jasmine matchers
添加到karma.conf.js之类的框架中?谢谢,这就是我所缺少的,请将此添加到一个答案中,以便我可以接受:)感谢这个答案,这也是一个适用于可能需要它的任何人的工作示例