如何自动编译所有指令依赖?

时间:2016-05-05 20:22:04

标签: angularjs unit-testing jasmine karma-jasmine angular-mock

假设我制作了两个Angular指令:

富:

<div> Hello World! </div>

栏:

<foo></foo>

我现在要测试Bar。我的测试看起来像是:

describe("Bar Test", function () {
    beforeEach(
        angular.mock.module('module')
    );

    var $rootscope,
    $compile,
    element,
    scope;

    beforeEach(inject(['$injector', function ($injector) {
        $rootscope = $injector.get('$rootScope');
        $compile = $injector.get('$compile');
        scope = $rootscope.$new();
        element = $compile(angular.element('<bar></bar>'))(scope);

        var $httpBackend = $injector.get('$httpBackend');
        var html = require('text!path/to/bar.html');
        $httpBackend.whenGET(/bar.html/).respond(html);
        scope.$apply();
        $httpBackend.flush();
    }]));

    it("test bar", function(){
        expect(element.find("foo").text).toEqual("Hello World!");
    });
});

现在这个例子有点愚蠢,因为Bar测试确实正在测试Foo,但是当你可以想象指令变得更加复杂并且行为变得更加交织在一起时(即让我们说{{1}在Foo的范围内创建一个对象)

此示例也不起作用,因为Bar从未编译过,因此Foo的内部html将只是Bar,内部没有Hello World。

我的问题是:如何让我的单元测试自动编译单元测试中的所有相关指令?

我怀疑答案可能是'你不应该这样做,因为它不是单元测试',所以或者,我如何明确允许特定的指令被编译?

0 个答案:

没有答案