解决方法:在beforeEach中重新初始化router:
// 在describe外面定义router
let router = new VueRouter();
// 在beforeEach中重新初始化 beforeEach写在describe里面
beforeEach(() => {
// 测试跳转时共用同一个对象会产生点击次数叠加,每个测试用例之间的跳转次数不独立导致结果不准确
// 执行每个测试用例之前重新初始化一次router,保证jest.spyOn/jest.fn监听到的是不同对象上的push
router = new VueRouter();
router.push({
path: '要测试部的组件对应的路由',
});
});
// mock掉push方法的时候是jest.spyOn(router,'push'),也可以使用当前组件实例jest.spyOn(vm.$router,'push'),在外面定义的router和vm.$router是同一个,在实例化wrapper时传进去后会将router合并到$router,所以vm.$router和router用哪个都行