引用错误找不到变量$ compile

时间:2016-01-11 15:55:01

标签: javascript jasmine karma-runner

我正在使用Jasmine对AngularJS指令进行单元测试。

即使我在$compile语句中注入beforeEach,我也收到此错误:

Reference Error: can't find variable: $compile

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

    describe('testCase', function() {
        var nlElement = angular.element('<div directive></div>');
        var element = $compile(nlElement)($rootScope); // this is where the error is being thrown
        $rootScope.$digest();

        it(...)
    });
});

我是否必须在describe块中的第二个it中包含这些语句?最终,我希望能够在每次测试之前注入所有这三个语句,但我正在尝试解决$compile错误。

1 个答案:

答案 0 :(得分:0)

事实证明,describe块在beforeEach语句之前执行,这对我来说是违反直觉的。另外,如果你想在测试之前初始化变量和指令(就像我在第二个describe块中那样,那么将它包含在beforeEach语句中,并在it中测试你的断言块。

describe('test', function() {


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

        beforeEach(inject(function() {    
            var nlElement = angular.element('<div directive></div>');
            var element = $compile(nlElement)($rootScope); // this is where the error is being thrown
            $rootScope.$digest();
        }));

        it(...)
    });
});