在vue组件上测试导航卫士'beforeRouteLeave'

时间:2018-07-17 12:01:22

标签: javascript vue.js jestjs vue-router vue-test-utils

我目前一直在开玩笑地对vue组件的路由行为进行单元测试。离开组件时,Vue-router的“ beforeRouteLeave”导航保护会运行一些逻辑。在生产环境中运行的应用程序中会调用此守护程序,但是在我尝试对其进行测试时不会调用它。

我使用jest作为测试框架,并使用vue-test-utils挂载组件并使用vue-router设置本地Vue实例。

在这里您可以找到一个最小的工作示例(在src / components / HelloWorld.spec中进行测试):

https://codesandbox.io/s/72536ojvp6?module=%2Fsrc%2Fcomponents%2FHelloWorld.spec.js

为什么不调用路由器挂钩,如何使它工作? 预先感谢!

1 个答案:

答案 0 :(得分:0)

对我来说,以下代码可以很好地测试vue路由器导航防护。

const beforeRouteUpdate = wrapper.vm.$options.beforeRouteUpdate[0];
let nextFun = jest.fn();

// in place wrapper.vm you can send any object you want bcz when we call beforeRouteUpdate it looses this context

beforeRouteUpdate.call(wrapper.vm , "toObj", "fromObj", nextFun); 

beforeRouteEnter route navigation guard github

相关问题