unit-testing - 在单元测试中触发 vue-select 下拉项选择

标签 unit-testing vue.js jestjs vue-test-utils vue-select

问题 :无法在单元测试中以编程方式触发 Vue-Select3 项目下拉选择。

我已经尝试过 vue-test-utils@testing-library/vue以及在浏览器中以编程方式触发点击事件以强制选择列表项。然而,这些都没有奏效。我设法触发选择的唯一方法是获取 VueSelect 实例并发出“输入”事件。我还尝试在下拉容器等上触发不同的事件。

// Failed

// testing-library
const dropdownItem = getAllByTestId('dropdown-item')
fireEvent.click(dropdownItem[0])

// test-utils
wrapper.find('[data-testid=dropdown-item]').trigger('click')

// In browser
document.querySelectorAll('.vs__dropdown-item')[0].click()

// Success
wrapper.find(VueSelect).vm.$emit('input', payload)

当前结果 : 当点击事件被触发时,什么也不会发生。
预期结果 :当点击事件被触发时,Vue-Select 应该选择该项目并发出 'input' 事件。

最佳答案

我找到了一种直接选择选项的方法。您可以使用 select VueSelect的功能组件,像这样:

const wrapper = mount(YourComponent)
const vueSelect = wrapper.find(VueSelect)
vueSelect.vm.select(yourOptionToSelect)

如果您只想选择特定选项,这将起作用。

但是,是的,如果您想模拟对其中一个选项的点击,那将无济于事。而且我知道这种改变组件状态的方式不是这样做的首选方式,但它是我找到的唯一解决方案。

关于unit-testing - 在单元测试中触发 vue-select 下拉项选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57559013/

相关文章:

reactjs - enzyme 中的接头是什么

react-router - 使用 Jest 测试来自 React-router v4 的链接

c# - 如何测试谷歌搜索按钮

c++ - 我修改了 gtest/gmock,所以模拟非虚函数真的很容易

javascript - Vue.js 不适用于新的 Laravel 5.8 项目

vue.js - 如果直接获取/设置值,为什么我应该使用 getters 和 mutations 而不是?

unit-testing - 如何用 Jest 测试一个React组件是否包含另一个组件?

javascript - 使用 Mocha 和 requirejs 进行测试

angular - 单击事件发生时如何对下拉菜单进行单元测试

javascript - 未选中时,将对象作为绑定(bind)到数组属性的值的 VueJS 复选框不会脱离数组