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

时间:2016-06-17 19:46:23

标签: angularjs angularjs-directive karma-jasmine

我正在尝试对我构建的指令运行一个简单的测试,每次都会出现以下错误:

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合作,所以我可能会遗漏一些相当简单的东西,虽然我无法弄明白究竟是什么。

1 个答案:

答案 0 :(得分:1)

对于测试,您应该使用ngMock模块

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

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