检查来自 html - angular 指令的属性测试 jasmine karma

check attribute from html - angular directive testing jasmine karma

如何检查 HTML 中是否存在属性并匹配其值。这是我写的测试 spec.js,

define(['angular',
        'angularMocks',
        'site-config',
        'ng_detector',
    ],
    function(angular,
        mock,
        $app,
        ng_detector) {

        describe('ng-detector controller', function() {

            beforeEach(angular.mock.module("webapp"));

            var $compile, $rootScope, tpl, $scope, elm, templateAsHtml;

            beforeEach(angular.mock.inject(function(_$compile_, _$rootScope_) {

                $compile = _$compile_;

                $rootScope = _$rootScope_;
                // $scope = _$rootScope_.$new();

            }));

            it('should initialize the ng-detector directive', inject(function() {

                var tpl = $compile("<div ng-detector ></div>")($rootScope);

                $rootScope.$digest();

               console.log(tpl) // Log: r{0: <div ng-detector="" class="ng-scope" ng-verison="1.6.4"></div>, length: 1}

                templateAsHtml = tpl[0].outerHTML;

                expect(templateAsHtml.attr('ng-version')).toEqual(angular.version.full);

            }));

        });
    });

指令。将 angular 版本添加到属性 ng-version

'use strict';

define(['app-module'], function(ng) {

    $app.info('ng detector initialized. {file: directives/ng-detector.js}');

    ng.directive('ngDetector', function() {
        return {
            restrict: "A",
            link: function(scope, elm, attr) {
                elm.attr('ng-version', angular.version.full);
            }
        };
    });
    return ng;
});

我想获取指令设置的ng-version属性并匹配属性值。

我想通了。我在看不同的地方。

it('should check the angular version number', angular.mock.inject(function() {

       expect(tpl.attr('ng-version')).toEqual(angular.version.full);

   }));