Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为vue multiselect编写单元测试_Javascript_Unit Testing_Vue.js_Vuejs2 - Fatal编程技术网

Javascript 为vue multiselect编写单元测试

Javascript 为vue multiselect编写单元测试,javascript,unit-testing,vue.js,vuejs2,Javascript,Unit Testing,Vue.js,Vuejs2,我正在努力解决如何为有问题的用户编写测试 具体来说,我试图“单击”输入打开下拉列表(然后选择一个选项),但是没有任何效果 我试过了 vm.$el.querySelector('.multiselect').click() 在浏览器中: document.querySelector('.multiselect').click() 还有很多其他的组合,但都不起作用 对于一个强调它的测试覆盖率的库来说,不提供在单元测试中使用它的文档(我可以找到关于如何使用它的文档)是很奇怪的。最终实现了这一点,关

我正在努力解决如何为有问题的用户编写测试

具体来说,我试图“单击”输入打开下拉列表(然后选择一个选项),但是没有任何效果

我试过了

vm.$el.querySelector('.multiselect').click()
在浏览器中:

document.querySelector('.multiselect').click()
还有很多其他的组合,但都不起作用


对于一个强调它的测试覆盖率的库来说,不提供在单元测试中使用它的文档(我可以找到关于如何使用它的文档)是很奇怪的。

最终实现了这一点,关键是
.dispatchEvent(new window.Event('focus'))
而不是
.focus()

最终测试的相关位:

expect(vm.$el.querySelectorAll('input')).to.have.lengthOf(1)

vm.$el.querySelector('.multiselect').dispatchEvent(new window.Event('focus'))
await tick()
const s = vm.$el.querySelectorAll('.multiselect__element')[2].querySelector('span')
expect(s.innerText).to.equal('Science')
s.dispatchEvent(new window.Event('mousedown'))
await tick()
expect(routes_visited).to.deep.equal(['/s/3-science'])

vm.$el.querySelector('.cross').click()
await tick()
expect(routes_visited).to.deep.equal(['/s/3-science', '/'])
(请注意,我的组件更改了
vue路由器
路由,因此我正在
监视
路由,并在测试中推入所访问的
路由以跟踪更改。)