Я временно отключил свой код маршрутизатора, когда я запускаю модульные тесты с vue-test-utils из-за https://github.com/vuejs/vue-cli/issues/1669. Это работает нормально, однако теперь у меня есть другой тест, который взрывает тесты, потому чтоон получает доступ к коду маршрута, который отключен.
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'
.Разве тесты не должны игнорировать этот сегмент кода?Я могу только предположить, что файл все еще «читается» и проверяется, даже если он не запущен.