理解AngularJS测试
我似乎无法理解测试AngularJS应用程序的概念 我使用PHPstorm作为我的IDE,并通过node成功安装了node.js和karma 然后我创建了一个karma.config文件:理解AngularJS测试,angularjs,testing,karma-runner,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',
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'
TypeError:对象#没有方法“apply”
TypeError:对象5没有方法“toBe”
现在我有两个问题:
- 我做错了什么
- 因果报应的东西从哪里得到茉莉花的东西?在我看来,它似乎无法得到它
angular mocks.js
模块
当您在karma配置中指定frameworks:['jasmine']
时,它包含jasmine,因此您无需自己包含它
至于你的错误
expect(x.toBe(5))
应该是:
expect(x).toBe(5)
确保在要加载的文件列表中包含
angularmocks.js
模块
当您在karma配置中指定frameworks:['jasmine']
时,它包含jasmine,因此您无需自己包含它
至于你的错误
expect(x.toBe(5))
应该是:
expect(x).toBe(5)
非常感谢您!您是否介意简要解释一下angular-mocks.js的用途以及我在哪里可以找到它的模板?angular mocks是一组用于模拟angular的不同组件的功能。例如,如果要测试从服务器返回的数据是否正确填入对象中,可以模拟
$http
服务,使其返回虚拟数据,而不必调用实际的web服务。这可能会帮助您再次理解测试。我包括了它,还解决了toBe()上的错误,但我仍然为apply()获取了一个,而不是使用angular.module
,或者使用angular.mock.module
,或者只是简单地module
(angular.mock.module
将自身放在窗口对象上以方便)。您可能正在调用$scope.apply()而不是$scope.$apply(),测试将为您捕获该错误。非常感谢您!您是否介意简要解释一下angular-mocks.js的用途以及我在哪里可以找到它的模板?angular mocks是一组用于模拟angular的不同组件的功能。例如,如果要测试从服务器返回的数据是否正确填入对象中,可以模拟$http
服务,使其返回虚拟数据,而不必调用实际的web服务。这可能会帮助您再次理解测试。我包括了它,还解决了toBe()上的错误,但我仍然为apply()获取了一个,而不是使用angular.module
,或者使用angular.mock.module
,或者只是简单地module
(angular.mock.module
将自身放在窗口对象上以方便)。您可能正在调用$scope.apply()而不是$scope.$apply(),测试将为您捕获该错误。