Unit testing 在不使用jQuery的情况下模糊字段
我想(单元)测试我的AngularJS应用程序,而不用使用jQuery,因为jQuery将取代jqLite,而在真正的应用程序中jQuery也不可用。 jQuery和jqLite之间确实存在差异,因此在单元测试中让jQuery可用于AngularJS是一种风险 现在,我的大多数测试在没有jQuery的情况下都可以正常工作,但我需要模糊一个字段,我只能找到如何使用jQuery。我将如何以跨浏览器的方式在Javascript中实现这一点 更新:收到答案后,我使用triggerHandler()解决了它,但不是在指令本身中,而是在单元测试中,如下所示:Unit testing 在不使用jQuery的情况下模糊字段,unit-testing,angularjs,jqlite,Unit Testing,Angularjs,Jqlite,我想(单元)测试我的AngularJS应用程序,而不用使用jQuery,因为jQuery将取代jqLite,而在真正的应用程序中jQuery也不可用。 jQuery和jqLite之间确实存在差异,因此在单元测试中让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);
});
为什么不试试指令:
app.directive('blurable', function () {
return {
link: function(scope, element) {
element.bind("blur" , function(e){
// blur happens
});
scope.triggerBlur = function(){
element.triggerHandler("blur");
}
}
}
});
因此,现在在您的范围内
可以运行此触发模糊
方法进行“手动”模糊。Plunk:为什么不试试指令:
app.directive('blurable', function () {
return {
link: function(scope, element) {
element.bind("blur" , function(e){
// blur happens
});
scope.triggerBlur = function(){
element.triggerHandler("blur");
}
}
}
});
因此,现在在您的范围内
可以运行此触发模糊
方法进行“手动”模糊。Plunk:不错,以前从未见过该功能@Maarten,但我不知道这种风格在单元测试环境中是否是一种好的实践……我认为它应该是可以的;该装置通过一个真实事件进行测试,只模拟了触发器,但模拟结果与存根等有一定的一致性。。。如果其他人不这么认为,请让我知道尼斯,以前从未见过该功能@Maarten,但我不知道这种风格在单元测试环境中是否是一种好的实践……我认为它应该是可以的;该装置通过一个真实事件进行测试,只模拟了触发器,但模拟结果与存根等有一定的一致性。。。如果其他人不这么认为,请告诉我您也可以使用angular UI@您也可以使用angular UI@