Область тестирования угловых директив. $$ childHead

0

Я пытаюсь написать некоторые тесты, чтобы покрыть угловую директиву, которая не имеет указанного контроллера и просто использует ссылку, как показано ниже:

директивный код:

(function () {

    'use strict';

    angular
        .module('pages.projections')
        .directive('spPlanProjectionDateFilter', spPlanProjectionDateFilter);

    spPlanProjectionDateFilter.$inject = ['projectionsModel',
        'moment',
        'projectionsService',
        '_'];

    function spPlanProjectionDateFilter(projectionsModel,
                                        moment,
                                        projectionsService,
                                        _) {

        var directive = {
            restrict: 'E',
            link: linker,
            templateUrl: 'app/pages/projections/sp-plan-projection-date-filter.html',
            scope:{}
        };
        return directive;

        function linker(scope, elem) {

            scope.dateFrom = moment();

В моих тестах я хочу, чтобы chect dateFrom был равен сегодняшней или другой дате после некоторого действия....

тестовый код:

describe.only('spPlanProjectionDateFilter', function () {
    'use strict';
    var $compile, $rootScope;
    var element = '<sp-plan-projection-date-filter></sp-plan-projection-date-filter>';
    var scope;

    beforeEach(module('pages.projections'));
    beforeEach(module('app.services'));
    beforeEach(inject(function (_$compile_, _$rootScope_, _$controller_) {
        $compile = _$compile_;
        $rootScope = _$rootScope_;
        scope = $rootScope.$new();
    }));

    describe('when initialised', function () {
        it('should set dateFrom to today', function(done) {
            var compileDirective = $compile(element)(scope);

            scope.$digest();
            console.log(compileDirective);
            expect(scope.dateFrom).equals('ddd');
        });
    });
});

Почему мне приходится свертывать весь путь до области. $$ childHead, чтобы увидеть свойства и функции, которые я висит у моего компоновщика? Т.е. когда я нахожусь в консоли, и я опрошу переменную области видимости, я не вижу никаких свойств и функций, и я вижу их только в том случае, когда я расширяю объект $$ childScope в моей переменной области видимости. Я думал, что смогу утверждать свою переменную "scope", которую я имею в тесте? Есть ли более чистый способ проверить эту директиву?

ура

Теги:
unit-testing
directive

1 ответ

0

Похоже, вам просто нужно получить доступ к изолированной области действия. Должно быть так просто:

var compileDirective = $compile(element)(scope);
var isolateScope = compileDirective.isolateScope();

Затем вы можете получить доступ к изолятуScope из своих утверждений.

expect(isolateScope.dateFrom).equals('ddd');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню