首页 > 解决方案 > 如何模拟从已安装的生命周期方法触发的异步方法?

问题描述

我无法弄清楚如何模拟从mounted生命周期方法调用的异步方法。我试图嘲笑UsersApi.getAllUsers().

//code.vue
mounted: async function () {
  await UsersApi.getAllUsers().then(response => {
    this.options = response.data
  })
}

//code.test.js
import UsersApi from '@/api/users'
…
jest.mock('UsersApi')
UsersApi.getAllUsers.mockResolvedValue([
  {
    user_id: 123,
    first_name: 'Abc',
    last_name: 'Def'
  }
])
…

输出:Cannot find module 'UsersApi' from 'code.spec.js'

该模块存在并且正在组件中使用。也许使用模拟不适合这个目的?

另一种选择是以某种方式抑制已安装的方法,这将起作用,因为无论如何我this.options都是从测试中设置的。

编辑:这是getAllUsers从哪里来的。

//users.js
export default {
  async getAllUsers() {
    …
  },
  async getUsers(payload) {
    …
  }
…

标签: vuejs2jestjs

解决方案


推荐阅读