测试一个AngularJS指令

前端之家收集整理的这篇文章主要介绍了测试一个AngularJS指令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
您如何在AngularJS指令中测试焦点?我期望以下工作:
describe('focus test',function(){
    it('should focus element',function(){
        var element = $('<input type="text" />');
        // Append to body because otherwise it can't be foccused
        element.appendTo(document.body);
        element.focus();
        expect(element.is(':focus')).toBe(true);
    });
});

但是,这仅适用于IE,它在Firefox和Chrome中失败

更新:
@S McCrohan的解决方案。使用这个我创建了一个’toHaveFocus’匹配器:

beforeEach(function(){
    this.addMatchers({
        toHaveFocus: function(){
            this.message = function(){
                return 'Expected \'' + angular.mock.dump(this.actual) + '\' to have focus';
            };

            return document.activeElement === this.actual[0];
        }
    });
});

用法如下:

expect(myElement).toHaveFocus();

请注意,对于与焦点相关的测试,已编译的元素必须附加到DOM,可以这样做:

myElement.appendTo(document.body);
尝试’document.activeElement’而不是’:focus’。我没有通过业务测试它,但$(‘document.activeElement’)在标准jQuery下按照要求进行操作。

猜你在找的Angularjs相关文章