【问题标题】:Testing with Karma使用 Karma 进行测试
【发布时间】:2015-03-24 09:46:51
【问题描述】:

我是 Karma 的初学者,我无法对我的项目进行测试。 我试过这个: http://blog.codeship.com/mocha-js-chai-sinon-frontend-javascript-code-testing-tutorial/ 该示例适用于“html 页面测试”,但我无法使其适用于 start karma.conf.js(我得到:Executed 0 of 0 ERROR)

这是我的 karma.conf.js 文件:

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['mocha', 'chai'],
    files: [
        'node_modules/angular/angular.js',
        'node_modules/angular-mocks/angular-mocks.js',
        'src/client/api/category/category.model.js'
        **'test.js'** (edit)

    ],
    exclude: [
    ],
    preprocessors: {
    },
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
    });
  };

这是我要测试的文件:(src/client/api/category/category.model.js)

angular.module("aq.kiosk.api.category.models", [])
.factory("CategoryModel", [
    function () {

        var CategoryModel = function (data) {

            this.id = "";
            this.name = "";
            this.description = "";
            this.mediaUrls = [];
            this.kind = "";
            this.childCount = "";
            this.issueCount = "";
            this.issues = [];

            if (angular.isDefined(data)) {
                this.parse(data);
            }
        };

        CategoryModel.prototype.parse = function (data) {
            if (data) {
                var self = this;
                angular.forEach(data, function (value, key) {
                    self[key] = value;
                });
            }
        };

        return CategoryModel;
    }
]);

这是我的测试文件:

describe("categorymodel", function() {

var data = {
            childCount: "0",
            description: "",
            id: "16",
            issueCount: 0,
            kind: "",
            mediaUrls: [],
            name: "Lorem Ipsum"
        };

beforeEach(module('aq.kiosk.api.category.models'));
beforeEach(inject(function (_CategoryModel_) {
CategoryModel = _CategoryModel_;

}));

  describe("constructor", function(){
    it('assigns a name', function () {
      expect(CategoryModel(data)).to.have.property('name', "Lorem Ipsum");
    });

  });

});

**编辑: 非常感谢,现在可以使用了**

【问题讨论】:

  • 创建模块的代码在哪里? angular.module("aq.kiosk.api.category.models") 假定它已经创建。如果您尝试在 category.model.js 文件中创建模块,则语法为 angular.module("aq.kiosk.api.category.models", [])。如果模块是由另一个文件创建的,该文件是如何包含的?

标签: javascript angularjs unit-testing karma-runner


【解决方案1】:

您似乎缺少参考您的测试规范

你有

files: [
    'node_modules/angular/angular.js',
    'node_modules/angular-mocks/angular-mocks.js',
    'src/client/api/category/category.model.js'
],

应该是

files: [
    'node_modules/angular/angular.js',
    'node_modules/angular-mocks/angular-mocks.js',
    'src/client/api/category/category.model.js',
    'specs/category.spec.js'
],

您还需要(根据 ivarni 的评论)更改您的语法

来自

angular.module("aq.kiosk.api.category.models")

angular.module("aq.kiosk.api.category.models", [])

让你的 beforeEach 工作

beforeEach(module('aq.kiosk.api.category.models'));

【讨论】:

  • 这将给出与它在category.model.js 中已经爆炸相同的错误,但是很好,它们都是必须修复的问题。
  • 嗯,我会暂时搁置这个问题 - 这个问题的众多答案之一 :)
  • 好的,谢谢,我添加了测试文件,以及创建模块的文件。现在我有这个错误: Uncaught ReferenceError: CategoryModel is not defined(在测试文件中)。 “beforeEach(module('aq.kiosk.api.category.models'));”应该包括它,不是吗?
  • 我更正了它添加了另一个文件(category.module.js),其中“angular.module(“aq.kiosk.api.category.models”,[])”完成(在我的更新的问题),我也尝试按照ivarni的建议直接写,但我仍然有同样的错误
  • 如果我理解正确,您不需要添加新的模块文件,而是需要编辑 category.model.js 以在模块定义中包含 []。
猜你喜欢
  • 2016-12-25
  • 2013-05-16
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多