angularjs - 了解 AngularJS 测试

标签 angularjs testing karma-runner

我似乎无法理解测试 AngularJS 应用程序的概念。

我使用 PHPstorm 作为我的 IDE,并通过 node 成功安装了 node.js 和 karma。

然后我创建了一个 karma.config 文件:

  module.exports = function(config) {
config.set({
  basePath: '',
  frameworks: ['jasmine'],
  files: [
      'js/angular.js',
      'js/va.angular.js',
    'test/**/**/*Spec.js'
  ],
  exclude: [

  ],
  reporters: ['progress'],
  port: 9876,
  colors: true,
  logLevel: config.LOG_INFO,
  autoWatch: false,
  browsers: ['C:/Program Files (x86)/Google/Chrome/Application/chrome.exe'],
  captureTimeout: 60000,
  singleRun: false
});
};

我还创建了一个测试文件:

// mainSpec.js
describe('controllers', function(){
beforeEach(angular.module('va'));

it('should friggin test something', inject(function() {
    var x = 5;
    expect(x.toBe(5));
}));
});

但是,当我尝试运行我的测试时,由于以下原因它失败了:

TypeError: Object #<Object> has no method 'apply'
TypeError: Object 5 has no method 'toBe'

现在我有两个问题:

  • 我做错了什么?
  • karma 的东西从哪里得到 Jasmine 的东西?对我来说,它似乎无法理解。

最佳答案

确保在要加载的文件列表中包含 angular-mocks.js 模块。

当您在 karma 配置中指定 frameworks: ['jasmine'] 时,它包含 jasmine,因此您无需自己包含它。

至于你的错误,

expect(x.toBe(5))

应该是:

expect(x).toBe(5)

关于angularjs - 了解 AngularJS 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19734768/

相关文章:

javascript - 如何从 AJAX 调用 (AngularJS) 正确返回我的数据

Angularjs for 循环 promise 回调

php - 使用 PHPUnit 5.5.4 通过 dataProvider 动态访问类常量

ios - 在 iOS 应用程序测试期间,如何访问主机应用程序中的单例实例?

javascript - 在 Javascript 中使用 Firebase 时,如何将数据从 setBackgroundMessageHandler() 传递到 Angular 应用程序?

javascript - AngularJS - "Service coupling"与网络开销

python - 如何对我的单元测试进行有意义的代码覆盖分析?

phantomjs - webpack dllplugin 如何与 karma 一起使用?

node.js - Karma 测试运行程序 - 无法捕获 chrome

javascript - 期望不带参数的 toThrow 函数 - Jasmine