我似乎无法理解测试 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/