Have simple HTML text input:
<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>
I would like to be able to run unittest for every keystroke that occurs inside this text entry and check it for a specific key. Javascript File:
'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 ); }; })();
Part of my test file regarding this part:
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') });
Right now, keystrokes and keyboards don't seem to be saved in the input field (I can easily set the value using: document.getElementById('inputstring').value = 'A' , which passes the other parts of the tests, but not the keystrokes), although I see that events fire:
Testing Values:
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
I donβt know how: (1) disabling keypress / keypress events in Jasmine (2) apply these events to a specific html element.value element Therefore, I can check these values. I would like every keypress / keyup to be tested.
javascript unit-testing karma-runner keypress keydown
Jeeves
source share