angularjs – 茉莉花测试中的Access指令属性值

我有一个像这样的AngularJS指令示例< div some-dir =“5”/>

如何在我的测试中访问此指令属性值5?

describe("some-dir",function() {
    var element,scope;
    beforeEach(module('app'));
    beforeEach(inject(function($rootScope,$compile) {

        scope = $rootScope;
        element = angular.element('<div><div id="el1" some-dir="5" /></div>');
        $compile(element)(scope);
        scope.$digest();

    }));

    it('should be able to get the attribute value',function(){

       // get the attr value of some-dir


    });

});
您可以使用其isolateScope方法检查元素的范围值.但是,当您在指令属性旁边传递值时,这将不起作用,因为这些值不会复制到隔离范围中.

在这种情况下,可以使用element.attributes方法获取并测试该值.

首先编译你的指令html:

var element;

beforeEach(inject(function (_$compile_,_$rootScope_) {
    var $compile = _$compile_,$scope = _$rootScope_;

    element = $compile('<div my-directive="4" some-value="5"></div>')($scope);
    $scope.$digest();
}));

然后你可以期望element的isolateScope返回一个带有someValue属性的对象.

it('should expect some-value as 5',function () {
    inject(function ($injector) {
        // check attribute values using isolateScope
        expect(element.isolateScope().someValue).toEqual(5);

        // check the value right after directive attribute
        expect(element.attr('my-directive')).toEqual('4');
    });
});

这是一个例子plunker.

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...