我有一个jQuery插件,用输入元素限制字符输入。这个插件(类似于numeric)挂钩到keydown和keyup,以允许某些字符在某些条件下阻止该事件:
jqueryInputElement.on('keydown', function(event){
if (wrongThingEntered(event))
event.stopPropagation();
event.preventDefault();
});
wrongThingEntered
使用事件中的字符代码和修饰键以及当前输入的值(此示例中缺少)执行时髦的事情。出于这个原因,我需要模拟来自Karma的不同设备的字符输入,以便我可以在keydowns和keyups等之后测试该值。
据我所知,我可以使用jQuery触发器或类似的模拟,但是在关闭了什么键映射到不同设备上的字符代码的兔子洞之后,我得出结论,触发这些低级事件并没有解决我的问题,测试并没有真正测试任何东西。
我真的喜欢这样的事情:
describe 'hello world', ->
element = undefined
beforeEach ->
element = $('<input>')
element.customPlugin()
element.focus()
afterEach ->
element.remove()
describe 'keyboard events work', ->
it 'receives some input', ->
karma.user.presses '4' # not sure about this part
expect element.val()
.toBe '4'
it 'respects paste commands', ->
karma.system.pasteBuffer = "some text to paste" # and also this part
karma.user.pastes() # ... and this part
expect element.val()
.toBe "some text to paste"
这可能与Karma(在我的情况下运行phantomJS)有关吗?