使用Mock.Interactions模拟鼠标在写入单元测试Polymer元素

时间:2017-07-11 10:02:54

标签: javascript unit-testing polymer polymer-1.0

我正在为自定义Polymer元素编写单元测试,需要模拟鼠标悬停事件并检查鼠标悬停时是否显示按钮(隐藏)。

我正在使用铁测试助手(模拟互动)。在测试期间,我收到此错误消息:

  

错误:MockInteractions.mouseover不是函数。

我的问题是我找不到合适的功能(.hovermouseOver并且类似的组合不起作用)并且不确定Mock.Interactions或我是否没有合适的功能只是找不到合适的人。

我的代码(仅测试部分):

test('check settings btb shows on hover', function(done) {
    var hoverSpy = sinon.spy();
    var button = Polymer.dom(myEl5.root).querySelector('#user-settings');
    button.addEventListener('mouseover', hoverSpy);
    MockInteractions.mouseover(button);
    });
});

1 个答案:

答案 0 :(得分:0)

Hi mouseover是HTML元素的事件,当鼠标指针位于元素上时会被触发。它不是鼠标可以做的交互。所以你真正想做的是触发鼠标悬停事件的鼠标移动事件。

test('check settings btb shows on hover', function(done) {
    var hoverSpy = sinon.spy();
    var button = Polymer.dom(myEl5.root).querySelector('#user-settings');
    button.addEventListener('mouseover', hoverSpy);
    MockInteractions.move(button, {x: 0, y: 0}, 
        {
             x: button.offsetLeft + (button.offsetWidth / 2), 
             y: button.offsetTop + (button.offsetHeight / 2)
        });
    });
});

此代码应模拟将鼠标移动到按钮的中心。