gpt4 book ai didi

javascript - Karma 中的单元测试 : Keypress inside a text Input

转载 作者:数据小太阳 更新时间:2023-10-29 04:49:08 30 4
gpt4 key购买 nike

有一个简单的html文本输入:

<html>
<body>
<input id="inputstring" type="text" onkeypress="testcharacter" onKeyUp="testcharacter ">
<div id ="result"></div>
<script type="text/javascript" src="javascriptfile.js"></script>
<script>testcharacter .init();</script>
</body>
</html>

希望能够在此文本输入内发生的每个按键上运行单元测试,并根据特定键检查它。 Javascript 文件是:

'use strict';

window.testcharacter = window.testcharacter || {};
(function() {
var testcharacter = function(k){
var s = document.getElementById('inputstring').value
if(s!=null||s.trim()!=""){
if(k==65){
document.getElementById('result').innerHTML = 'You pressed A'
}
if(s.length==0)
{ document.getElementById('result').innerHTML = ''}
}
}
window.testcharacter.init = function(){
document.getElementById('inputstring').addEventListener('keyup', testcharacter );
document.getElementById('inputstring').addEventListener('keypress', testcharacter );
};
})();

我的测试文件的一部分,关于这部分我有:

     it('should display character count with each keypress', function(){

var triggerKeyDown = function(element,keycode){

var e = jQuery.Event("testcharacter");
e.which = keycode;
$(element).trigger(e)
var ee = jQuery.Event("keyup")
ee.which = keycode + 1;
$(element).trigger(ee)

r = document.getElementById('inputstring').value

expect(document.getElementById('result').innerHTML).toBe(expected);
expect(document.getElementById('inputstring').innerHTML).toBe(expected);
};
triggerKeyDown('inputstring','65')

});

现在,keypress 和 keyup 似乎不会持续到输入框,(我可以使用以下方法轻松设置值:document.getElementById('inputstring').value = 'A' 通过了测试的其他部分,但没有通过按键)尽管我可以看到事件正在触发:

值的测试:

ALERT: <input id="inputstring" type="text">   // captured 'inputstring'
ALERT: '' // captured value of 'inputstring'.value and 'result'.innerHTML
ALERT: 65 // e.which value
ALERT: {type: 'keypress', timeStamp: 1474058737895, jQuery31006431827041498093: true, which: 65} // event created

不确定如何: (1) 在 Jasmine 中触发 keypress/keyup 事件 (2) 将这些事件应用于特定的 html element.value所以我可以测试这些值。我希望每个按键/按键都经过测试。

最佳答案

我发现了一些您可以尝试的东西,将 element\eventName 替换为您的元素和事件 (keypress/keyup):-

var jasmineExtensions = {
jQuerySpies: {},
spyOnEvent: function(element, eventName) {
var control = {
triggered: false
};
element.bind(eventName, function() {
control.triggered = true;
});
jasmineExtensions.jQuerySpies[element[eventName]] = control;
};
};

var spyOnEvent = jasmineExtensions.spyOnEvent;

beforeEach(function() {
this.addMatchers({
toHaveBeenTriggered: function() {
var control = jasmineExtensions.jQuerySpies[this.actual];
return control.triggered;
}
});
});

也许这对你有帮助。

关于javascript - Karma 中的单元测试 : Keypress inside a text Input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540287/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com