使用 Karma 和 Jasmine 测试 angularjs 指令 - 模块未定义

Testing angularjs directive with Karma and Jasmine - module is not defined

我正在尝试 运行 对我构建的指令进行简单测试,但每次都收到以下错误:

ReferenceError: module is not defined in /root/node-workspace/tk-quick-form/test.js (line 4)

我的karma.conf.js文件(相关内容):

//...
files: [
  'angular.min.js',
  'tkQuickForm.js',
  'test.js'
],
//...

我的 test.js 文件:

describe('Testing quickForm', function() {
    var $compile, $rootScope;

    beforeEach(module('tkQuickForm')); //the error points to this line

    beforeEach(inject(function(_$compile_, _$rootScope_) {
        $compile = _$compile_;
        $rootScope = _$rootScope_;
    }));

    it("Creates a simple form", function() {
        $rootScope.formStructure = [
            {
                fieldName: 'name',
                type: 'string'
            }
        ];
        var element = $compile("<div tk-quick-form='formStructure'></div>")($rootScope);

        $rootScope.$digest();
        expect(element.html()).toContain('<input id="name"');
    });
})

这是我正在测试的指令的前几行:

angular.module('tkQuickForm', [])
.directive('tkQuickForm', ['$http', '$compile', formDirective]);

function formDirective($http, $compile) {
     //some code...
}

这是我第一次使用 Karma 和 Jasmine,所以我可能在这里遗漏了一些相当简单的东西,尽管我无法弄清楚到底是什么。

要进行测试,您应该使用 ngMock 模块

https://docs.angularjs.org/api/ngMock

它允许您注入和模拟 angular 服务。