Angularjs 如何触发';键控';Jasmine和Phantomjs角度单元测试中的事件
我想测试我的指令,这里是:Angularjs 如何触发';键控';Jasmine和Phantomjs角度单元测试中的事件,angularjs,jasmine,phantomjs,keyup,eventtrigger,Angularjs,Jasmine,Phantomjs,Keyup,Eventtrigger,我想测试我的指令,这里是: function passwordMatch($timeout) { return { require: 'ngModel', link: function (scope, elem, attrs, ctrl) { var firstPassword = '#' + attrs.passwordMatch; elem.add(firstPassword).on('keyup', function () { s
function passwordMatch($timeout) {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
var firstPassword = '#' + attrs.passwordMatch;
elem.add(firstPassword).on('keyup', function () {
scope.$apply(function () {
var isMatch = elem.val() === $(firstPassword).val();
$timeout(function(){
ctrl.$setValidity('passwordMatch', isMatch);
})
});
});
}
}
}
要测试“passwordMatch”指令,我需要在jasmine测试文件中触发“keyup”事件。
这是我的茉莉花代码:
describe('directives', function() {
var scope;
var compile;
var form;
beforeEach(module('formValidation'));
beforeEach(inject(function(_$compile_, _$rootScope_) {
scope = _$rootScope_.$new();
var element = angular.element(
'<form name="form">' +
'<input type="email" ng-model="model.email" name="email" email-validate />' +
'<input ng-model="model.password" name="password" password-validate />' +
'<input ng-model="model.confirm_password" name="confirm_password" password-match="password" />' +
'<input ng-model="model.phone" name="phone" number-only />' +
'<input ng-model="model.zipCode" name="zipCode" contain-number />' +
'</form>'
);
scope.model = {
email: null,
password: null,
confirm_password: null,
phone: null,
zipCode: null
};
compile = _$compile_;
compile(element)(scope);
scope.$digest();
form = scope.form;
}));
describe('passwordMatch', function() {
it('should not pass without match', function() {
form.password.$setViewValue('1234567');
form.confirm_password.$setViewValue('7654321');
// need trigger 'keyup' event here
expect(form.confirm_password.$valid).toBe(false);
});
});
})
description('指令',函数()){
var范围;
var编译;
var形式;
在每个模块之前(模块(‘formValidation’);
beforeach(注入函数($compile,$rootScope){
scope=\$rootScope\$new();
变量元素=角度元素(
'' +
'' +
'' +
'' +
'' +
'' +
''
);
scope.model={
电子邮件:空,
密码:null,
确认密码:空,
电话:空,
zipCode:null
};
compile=\$compile;
编制(要素)(范围);
范围。$digest();
form=scope.form;
}));
description('passwordMatch',function()){
它('不应在不匹配的情况下通过',函数(){
表单.密码.$setViewValue('1234567');
表单。确认密码。$setViewValue('7654321');
//这里需要触发“keyup”事件
expect(form.confirm_password.$valid).toBe(false);
});
});
})
我试图为此编写单元测试,但无法成功触发keyup事件。我想知道是否有人能解决我的问题。jasmine版本是2.0首先获取要触发keyup事件的元素的引用,然后调用:$element.triggerHandler('keyup');