Javascript 呼叫';创建';Vue.js上Jest测试中的方法
我正在用Jest在vue.js上测试我的Javascript 呼叫';创建';Vue.js上Jest测试中的方法,javascript,unit-testing,vue.js,mocking,jestjs,Javascript,Unit Testing,Vue.js,Mocking,Jestjs,我正在用Jest在vue.js上测试我的Activity.vue组件 MyActivity.vue组件调用created()中的initializeTable()方法来初始化我的tableRows属性 问题是,当我运行测试时,Jest不调用'created()'方法,因此,它不初始化我的tableRows属性,然后测试说我的tableRows属性等于[](原始状态) 当我使用Jest进行测试时,如何调用created()方法 我已经尝试在测试中显式地调用它(例如,wrapper.vm.$crea
Activity.vue
组件
MyActivity.vue
组件调用created()
中的initializeTable()
方法来初始化我的tableRows
属性
问题是,当我运行测试时,Jest不调用'created()'方法,因此,它不初始化我的tableRows
属性,然后测试说我的tableRows
属性等于[]
(原始状态)
当我使用Jest进行测试时,如何调用created()
方法
我已经尝试在测试中显式地调用它(例如,wrapper.vm.$created()
),但是没有用
有人知道怎么解决吗
我在下面给出我的代码
先谢谢你
Activity.spec.js
从'@vue/test-utils'导入{shallowMount}
从“@/views/Activity.vue”导入活动
从“@/assets/js/api”导入api
常量expectedTableRows=[…]
常量$t=()=>{}
api.getActivity=jest.fn(
承诺,决心({
数据:[……]
})
)
描述('Activity.vue',()=>{
它('在created()中呈现vm.tableRows',()=>{
常量包装=浅量(活动{
模拟:{$t}
})
//wrapper.vm.$created()
expect(wrapper.vm.tableRows).toEqual(expectedTableRows)
})
})
活动.vue
从“@/assets/js/api”导入api
导出默认值{
数据(){
返回{
表格行:[]
}
},
创建(){
this.initializeTable()
},
方法:{
初始化表(){
这是真的
api.getActivity().then(响应=>{
this.tableRows=response.data
}).catch(错误=>{
this.errorBackend=错误
}).最后(()=>{
此参数为0。加载=错误
})
}
}
}
编辑1:解决方案
正如Husam Ibrahim所描述的,该函数是异步的,因此,我需要使用以下代码重构测试,现在我能够修复它
我在下面给出正确的代码:
从“flush promises”导入flushPromises//{
它('renders wm.tableRows after created()',async()=>{//断言同步运行,而方法进行异步调用。你说得对。非常感谢。上帝保佑。