由于https://github.com/vuejs/vue-cli/issues/1669,在使用vue-test-utils运行单元测试时,我暂时禁用了路由器代码。效果很好,但是,现在我有另一个测试正在对测试进行爆炸,因为它正在访问已禁用的路由代码。
if (process.env.NODE_ENV !== 'test') {
route = new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/',
name: 'home',
component: Home,
beforeEnter: (to, from, next) => {
if (store.getters.currentUser.agencyUser) {
next({ name: 'agency' })
} else if (store.getters.currentUser.participantUser) {
next({ name: 'participant' })
} else {
next()
}
}
},
...
} else {
route = new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: []
})
}
如果我在组件中调用任何router
方法,则该测试现在失败,因为我添加了beforeEnter检查。
beforeEnter: (to, from, next) => {
if (store.getters.currentUser.agencyUser) {
next({ name: 'agency' })
} else if (store.getters.currentUser.participantUser) {
next({ name: 'participant' })
} else {
next()
}
}
测试失败,因为store
引用了localStorage
,而vue-test-utils无法处理。但是,所有存储的引用代码都处于process.env.NODE_ENV !== 'test'
状态。测试不应该忽略该段代码吗?我唯一的猜测是,即使文件没有运行,它仍然可以“读取”并经过验证。