1

我想(单元)测试我的 AngularJS 应用程序而不使用 jQuery,因为 jQuery 将取代 jqLit​​e,而在真正的应用程序中 jQuery 也将不可用。jQuery 和 jqLit​​e 之间存在真正的区别,因此在单元测试中让 jQuery 可用于 AngularJS 是有风险的。

现在我的大多数测试在没有 jQuery 的情况下都可以正常工作,但是我需要模糊一个字段,我只能找出如何使用 jQuery 来做这件事。我将如何以跨浏览器的方式在 Javascript 中做到这一点?

更新:收到答案后,我使用 triggerHandler() 解决了它,但不是在指令本身中,而是在单元测试中,如下所示:

it("should set the blur state on blur", function() {
    angular.element(elm[0][0]).triggerHandler("blur");
    expect($rootScope.passwordblur).toBe(true);
});
4

1 回答 1

1

为什么不尝试指令:

app.directive('blurable', function () {        
        return {
            link: function(scope, element) {               
                element.bind("blur" , function(e){
                    // blur happens
                });
                scope.triggerBlur = function(){
                    element.triggerHandler("blur");
                }
            }
        }
    });

所以现在scope你可以运行这个triggerBlur方法来进行“手动”模糊。
Plunk:http ://plnkr.co/edit/wPqRqh

于 2013-08-06T08:29:24.990 回答