为 angular 设置 Jasmine/karma
Setting up Jasmine/karma for angular
我正在轻松地遵循本指南 - http://paislee.io/testing-angularjs-with-grunt-karma-and-jasmine/ - 并遇到如下几个问题:
Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:modulerr] Failed to instantiate module ngRoute due to:
Error: [$injector:nomod] Module 'ngRoute' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
我按照它告诉我的方式安装了所有东西,并找到了另一个设置测试的非常基本的例子(这是我第一次实施,所以我从小处着手),测试看起来像这样
describe('Unit: MainCtrl', function() {
// Load the module with MainCtrl
beforeEach(module('myApp'));
var ctrl, scope;
// inject the $controller and $rootScope services
// in the beforeEach block
beforeEach(inject(function($controller, $rootScope) {
// Create a new scope that's a child of the $rootScope
scope = $rootScope.$new();
// Create the controller
ctrl = $controller('MainCtrl', {
$scope: scope
});
}));
it('should create $scope.greeting when calling sayHello',
function() {
expect(scope.greeting).toBeUndefined();
scope.sayHello();
expect(scope.greeting).toEqual("Hello Ari");
});
})
而在控制器中它只是
$scope.name = "Ari";
$scope.sayHello = function() {
$scope.greeting = "Hello " + $scope.name;
}
(来自http://www.ng-newsletter.com/advent2013/#!/day/19)
我在单独的文件夹中设置了我的应用程序和控制器,使用常规的 ng-route 结构,我想这可能是问题所在?为此,我正在使用 grunt karma - 这是任务,以防它有帮助。
karma: {
unit: {
options: {
frameworks: ['jasmine'],
singleRun: true,
browsers: ['PhantomJS'],
files: [
'app/bower_components/angular/angular.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/scripts/**/*.js'
]
}
}
}
我需要一些帮助,这是我第一次尝试这样做,我很想进行一些自动化测试。感谢阅读!!
您没有包含 ngroute 模块,因为对该模块有一些依赖性。
应该有一个 bower 组件
'app/bower_components/angular-route/angular-route.js',
安装这个 bower 组件并将此行添加到 karma 配置中。
还要检查其他模块。
您需要在 karma conf 的文件列表中包含 ngRoute。错误消息说明了很多。
karma: {
unit: {
options: {
frameworks: ['jasmine'],
singleRun: true,
browsers: ['PhantomJS'],
files: [
'app/bower_components/angular/angular.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/bower_components/angular-mocks/angular-route.js',
'app/scripts/**/*.js'
]
}
}
}
我正在轻松地遵循本指南 - http://paislee.io/testing-angularjs-with-grunt-karma-and-jasmine/ - 并遇到如下几个问题:
Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:modulerr] Failed to instantiate module ngRoute due to:
Error: [$injector:nomod] Module 'ngRoute' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
我按照它告诉我的方式安装了所有东西,并找到了另一个设置测试的非常基本的例子(这是我第一次实施,所以我从小处着手),测试看起来像这样
describe('Unit: MainCtrl', function() {
// Load the module with MainCtrl
beforeEach(module('myApp'));
var ctrl, scope;
// inject the $controller and $rootScope services
// in the beforeEach block
beforeEach(inject(function($controller, $rootScope) {
// Create a new scope that's a child of the $rootScope
scope = $rootScope.$new();
// Create the controller
ctrl = $controller('MainCtrl', {
$scope: scope
});
}));
it('should create $scope.greeting when calling sayHello',
function() {
expect(scope.greeting).toBeUndefined();
scope.sayHello();
expect(scope.greeting).toEqual("Hello Ari");
});
})
而在控制器中它只是
$scope.name = "Ari";
$scope.sayHello = function() {
$scope.greeting = "Hello " + $scope.name;
}
(来自http://www.ng-newsletter.com/advent2013/#!/day/19)
我在单独的文件夹中设置了我的应用程序和控制器,使用常规的 ng-route 结构,我想这可能是问题所在?为此,我正在使用 grunt karma - 这是任务,以防它有帮助。
karma: {
unit: {
options: {
frameworks: ['jasmine'],
singleRun: true,
browsers: ['PhantomJS'],
files: [
'app/bower_components/angular/angular.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/scripts/**/*.js'
]
}
}
}
我需要一些帮助,这是我第一次尝试这样做,我很想进行一些自动化测试。感谢阅读!!
您没有包含 ngroute 模块,因为对该模块有一些依赖性。
应该有一个 bower 组件
'app/bower_components/angular-route/angular-route.js',
安装这个 bower 组件并将此行添加到 karma 配置中。
还要检查其他模块。
您需要在 karma conf 的文件列表中包含 ngRoute。错误消息说明了很多。
karma: {
unit: {
options: {
frameworks: ['jasmine'],
singleRun: true,
browsers: ['PhantomJS'],
files: [
'app/bower_components/angular/angular.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/bower_components/angular-mocks/angular-route.js',
'app/scripts/**/*.js'
]
}
}
}