javascript - 设置 Jasmine & Karma 来测试 Angular

标签 javascript angularjs karma-runner

我只是想设置 Karma 以使用 Jasmine 测试我的 Angular 应用程序。我收到此错误:

INFO [karma]: Karma v0.10.4 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 30.0.1599 (Mac OS X 10.9.0)]: Connected on socket pxDaOUXMfGXOVL7ZOuPb
Chrome 30.0.1599 (Mac OS X 10.9.0) ItemCtrl should work FAILED
    TypeError: Object [object Object] has no method 'off'
        at null.<anonymous> (/Users/macbookpro/Sites/groceries/spec/angular-mocks.js:1917:36)

这是 angular-mocks.js 中的函数:

afterEach(function() {
    var injector = currentSpec.$injector;

    currentSpec.$injector = null;
    currentSpec.$modules = null;
    currentSpec = null;

    if (injector) {
      injector.get('$rootElement').off();
      injector.get('$browser').pollFns.length = 0;
    }

    angular.mock.clearDataCache();

    // clean up jquery's fragment cache
    angular.forEach(angular.element.fragments, function(val, key) {
      delete angular.element.fragments[key];
    });

    MockXhr.$$lastInstance = null;

    angular.forEach(angular.callbacks, function(val, key) {
      delete angular.callbacks[key];
    });
    angular.callbacks.counter = 0;
  });

我想我只是在我的 karma 配置中以错误的顺序要求文件。这是我的文件结构:

karama.config.js 与它需要的文件位于同一目录 /spec 中:

// list of files / patterns to load in the browser
    files: [
      'angular.min.js',
      'angular-mocks.js',
      'app_testable.js',
      'app_spec.js'
    ],

app_testable.js 是我的应用程序的精简版本,除了 Angular 之外没有依赖项。这是我的测试。我只是想让 true 成为 true

'use strict';

describe('ItemCtrl', function(){
  var scope;
  beforeEach(angular.mock.module('Grocerease'));
  beforeEach(angular.mock.inject(function($rootScope, $controller){
      scope = $rootScope.$new();
      $controller('ItemCtrl', {$scope: scope});
    })
  );

  it('should work', function(){
    expect(true).toBe(true);
  });

});

我需要如何设置 karma 才能正确运行测试?

最佳答案

问题似乎是依赖项加载不正确。

您使用的是哪个版本的 Angular? 'angular' 和 'angular-mocks' 文件应该是相同的版本。

关于javascript - 设置 Jasmine & Karma 来测试 Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19781824/

相关文章:

javascript - 使用 foreignObject 从 svg 获取 Canvas dataURI 的问题

javascript - AngularJS 多个 http 请求

javascript - Jasmine :检查数组是否包含具有给定属性的元素

angularjs - 如何测试被 Karma mock 的 promise ?

java - 在 JSP 的 java 脚本中操作和存储 Java hashmap( map 的 map )以便稍后在组合菜单中使用

javascript - 意外 token < react 路由器组件中的错误

javascript - 从 iframe 更改父 url

javascript - 检测谁更改了模型(用户输入与 Controller )angularjs

c# - Angular 在 ASP.NET MVC 之上,显示错误

angular - Karma 断开连接,因为 10000 毫秒内没有消息