模拟Karma中的字符输入

时间:2014-02-21 13:39:26

标签: phantomjs functional-testing keyboard-events karma-runner

我有一个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)有关吗?

0 个答案:

没有答案