【发布时间】:2019-06-01 07:34:53
【问题描述】:
我是 vue 的新手,我创建了一个带有 VueRouter 的 router-link 来导航到某个页面。
<router-link
@click.native="onRouteClicked(index)"
/>
现在我需要模拟这个click.native 函数。我知道 vue-test-utils 提供了一个用于 vue 组件的 trigger 函数。
但是我如何从触发器到click.native?
我的 onRouteClicked 看起来像这样
methods: {
onRouteClicked: function (index) {
this.routedIndex = index;
}
}
我的测试是这样的
const myRouteWrapper = navBar.find('[to="/myroute"]');
myRouteWrapper.trigger('click')
expect(myComp.vm.routedIndex).equal(1);
routedIndex 完全没有变化
【问题讨论】:
-
您是否在
methods对象上定义了onRouteClicked函数?我相信应该会触发点击事件。 -
@jom 我已经更新了我的问题。是的,onRouteClicked 确实在方法对象内
-
TBH,我对 vue-test-utils 不是很熟悉,但我确实注意到
find方法需要 3 different types of selectors。在这种情况下,也许我会检查库是否真的将单个router-links 转换为 HTML 锚标记,其中#/myroute作为href属性,我们可以改为使用navBar.find('[href="#/myroute"]')。 -
我会说用这个解决方案回答你自己的问题,人们将来可能会发现这很有用,就像我一样;)
标签: vue.js vue-router vue-test-utils