我遵循AngularJS:Up and Running一书,在作者说使用Karma和Jasmine进行测试的章节中,他没有说太多的话来说明如何组织你的项目以及在哪里安装Karma和茉莉。
我安装了nodejs并运行良好。然后我把xampp / htdocs / angularjs-up-and-running我的项目与文件一起进行测试。
在同一个文件夹中,我有none_modules。在这最后一个文件夹中,我有业力,业力茉莉和karma-chrome-launcher。
从控制台我进入c:/ xampp / htdocs / angularjs-up-and-running / none_modules / karma文件夹,我使用了命令:
karma init
然后我回答了所有问题:
karma start
但我不知道如何测试我的js文件。我试图让http://localhost:9876/controller.js来测试我的文件,但我在控制台上得到了这个:
Controller.js
angular.module('notesApp', []).controller('ListCtrl', [ function(){
var self = this;
self.items = [
{id: 1, label: 'First', done: true},
{id: 2, label: 'Second', done: false}
];
self.getDoneClass = function(item) {
return {
finished: item.done,
unfinished: !item.done
};
};
}]);
我是angularjs和测试之王的新手。我搜索了实习生的解决方案,但我的问题是我不知道如何使用我的文件controller.js进行测试,我没有找到解决方案。 请有人帮忙解决这个问题。
答案 0 :(得分:1)
有一个名为karma.conf.js的文件。在此文件中,您指定了一个'文件'带有包含要运行的测试的文件数组的参数。所以你会写一个叫做app / mytest.js'在你的karma.conf.js文件中,你将把路径放到那个测试中。
module.exports = function(config) {
config.set({
files: [
"app/test.js",
],
});
};
请注意,您需要在测试文件本身中包含角度模块和控制器依赖项。
所以app / mytest.js的内容可能看起来像(来自angular documentation:)
describe('PasswordController', function() {
beforeEach(module('app'));
var $controller;
beforeEach(inject(function(_$controller_){
// The injector unwraps the underscores (_) from around the parameter names when matching
$controller = _$controller_;
}));
describe('$scope.grade', function() {
it('sets the strength to "strong" if the password length is >8 chars', function() {
var $scope = {};
var controller = $controller('PasswordController', { $scope: $scope });
$scope.password = 'longerthaneightchars';
$scope.grade();
expect($scope.strength).toEqual('strong');
});
});
});