Vue.js 用Vue Jest测试异步函数不起作用

Vue.js 用Vue Jest测试异步函数不起作用,vue.js,jestjs,Vue.js,Jestjs,功能: (更新:由于其他代码,我需要它是异步的/等待的,否则我的其他代码就不能工作) 测试: 结果: Expected value to equal: {"test": "test"} Received: undefined 我试过用承诺,用莫西奥斯,用西农,似乎什么都不管用。当我在函数中记录this.all时,它具有正确的值。但是,在测试中,它不会等待函数完成并将值分配给this.all。我试过使用nextTick、使

功能: (更新:由于其他代码,我需要它是异步的/等待的,否则我的其他代码就不能工作)

测试:

结果:

 Expected value to equal:
      {"test": "test"}
    Received:
      undefined
我试过用承诺,用莫西奥斯,用西农,似乎什么都不管用。当我在函数中记录
this.all
时,它具有正确的值。但是,在测试中,它不会等待函数完成并将值分配给
this.all
。我试过使用
nextTick
、使用
flushPromises
、使用
wait
。如何使测试等待函数
getAll()
分配了
this.all
响应数据?提前感谢。

您的方法getAll()应该是一个承诺,因为“axios”是并返回一个承诺

所以。。如果getAll是一个承诺,那么接下来可以使用.then().catch()调用它


请记住,每次任务结束时,请在承诺中返回resolve(),如果承诺结束时出现错误,请返回rejection()。

刷新不应该在模拟调用后发生吗?之前的刷新是针对我的,在mounted()中有一个异步函数,但我也尝试在调用getall()之前和之后添加刷新
import { mount, shallowMount, createLocalVue } from '@vue/test-utils'
import Map from '@/views/Map'
import Vue from 'vue'
import Vuetify from 'vuetify'
import moxios from 'moxios'
import axios from 'axios'
import flushPromises from 'flush-promises'
jest.mock('axios');

Vue.use(Vuetify)
let vuetify
let wrapper
vuetify = new Vuetify()
const localVue = createLocalVue()


describe('View', () => {
    beforeEach(() => {
        jest.clearAllMocks();

        moxios.install()
        wrapper = shallowMount(Map, {
            localVue,
            vuetify,
        })
       // I need this because I call another function with axios on mounted
        flushPromises()
        
    })
 

     it('should get all', async () => {

        axios.get = jest.fn().mockResolvedValue({
            data: [
                {
                    test: 'test'
                }
            ]
          }); 
        
        await wrapper.vm.getAll().then(() => {
            expect(wrapper.vm.all).toEqual(
                 test: 'test'
            )

    }) 
})
 Expected value to equal:
      {"test": "test"}
    Received:
      undefined