Vue Test Utils:如何跳过created钩子内调用的所有方法?
如何在测试时跳过Vue组件created钩子中的所有方法调用(无需修改组件)
当然有可行的解决方案!既然你没法修改组件本身,我们可以通过测试工具提供的API,在测试场景下临时替换组件的created钩子为空函数,完全跳过其中的方法调用。下面分Vue版本给出具体实现:
Vue 2 + vue-test-utils@1.x 场景
方法1:直接替换组件的created钩子
你可以在挂载组件前,临时覆盖组件的created选项,测试完成后再恢复原钩子,避免影响其他测试用例:
import { shallowMount } from '@vue/test-utils' import YourTargetComponent from '@/components/YourTargetComponent.vue' describe('YourTargetComponent', () => { let originalCreated // 在所有测试前保存原created钩子 beforeAll(() => { originalCreated = YourTargetComponent.created }) // 测试完成后恢复原钩子 afterAll(() => { YourTargetComponent.created = originalCreated }) it('跳过created中的所有方法调用', () => { // 替换为空函数 YourTargetComponent.created = () => {} const wrapper = shallowMount(YourTargetComponent) // 这里可以添加你的测试断言,比如验证方法没有被调用 expect(wrapper.vm.getAllocations).not.toHaveBeenCalled() }) })
方法2:用Jest Spy拦截created钩子
如果你的测试环境用Jest,也可以用jest.spyOn来mockcreated的实现:
import { shallowMount } from '@vue/test-utils' import YourTargetComponent from '@/components/YourTargetComponent.vue' describe('YourTargetComponent', () => { it('跳过created中的所有方法调用', () => { const spy = jest.spyOn(YourTargetComponent, 'created').mockImplementation(() => {}) const wrapper = shallowMount(YourTargetComponent) // 测试逻辑... // 清理mock spy.mockRestore() }) })
Vue 3 + vue-test-utils@2.x 场景
常规组件(非
相关产品推荐
相关产品推荐

