我不能在我的项目Karma和Jasmine上运行

时间:2016-11-16 13:04:11

标签: angularjs karma-runner karma-jasmine

我遵循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

Chrome就是这样打开的: Chrome Debug

但我不知道如何测试我的js文件。我试图让http://localhost:9876/controller.js来测试我的文件,但我在控制台上得到了这个:

Console Image

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进行测试,我没有找到解决方案。 请有人帮忙解决这个问题。

1 个答案:

答案 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');
    });
  });
});