Vue Test Utils 中的异步生命周期函数

时间:2021-03-15 15:33:34

标签: vue.js async-await promise vue-cli vue-test-utils

当我尝试测试已安装方法的组件时:

mounted(){
this.search()
}

methods:{
  async search(){
     try{
       await axios.something
       console.log("not executed only when shallowMount")
      }catch{}
  }
}

我检查了它返回 Promise 而没有 await。
我是这样写测试的:

    wrapper = await shallowMount(Component, {
      localVue
    });
    await wrapper.vm.search()// this works perfectly

然而,只有shallowMount 显然跳过了等待的函数,而下一行完美运行。
我不知道这种行为。
我该如何解决?

编辑:

我也使用 Mirage.js 来模拟响应。

function deviceServer() {
  return createServer({
    environment: "test",
    serializers: {
      device: deviceListSerializer()
    },
    models: {
      device: Model
    },
    fixtures: {
      devices: devices
    },
    routes() {
      this.namespace = "/api/v1/";
      this.resource("device");
    },
    seeds(server) {
      server.loadFixtures("devices");
    }
  });
}

1 个答案:

答案 0 :(得分:0)

p 没有返回 shallowMount,这就是为什么没有什么可等待的。要在测试中等待承诺,请尝试使用 flush-promises 库。使用 Promise,您的测试将如下所示:

flushPromises