【问题标题】:How to test (using Jest) a function that returns a promise that contain another promise如何测试(使用 Jest)返回包含另一个 Promise 的 Promise 的函数
【发布时间】:2021-06-23 07:41:57
【问题描述】:

所以,我想测试(使用 Jest)一个函数,该函数返回一个包含 axios 请求(作为另一个嵌套承诺)的承诺,并在 thencatch 块中解析外部承诺。

功能类似这样:

   fetchFunction() {
      return new Promise((resolve, reject) => {
        if (!this.valid) {
          this.value = 1;
          return resolve();
        }
        this.someModel.$get()
          .then(() => {
            this.value = 2;
            return resolve();
          })
          .catch(e => {
            this.value = 3;
            return reject(e);
          });
      });
    },

【问题讨论】:

    标签: javascript promise axios jestjs es6-promise


    【解决方案1】:

    如果你在谈论单元测试,你不应该在同一个测试中同时测试。

    也就是说,您对 fetchFunction() 方法的测试将包含模拟 this.someModel.$get() 函数的部分

    你可以创建一个模拟函数来返回一个类似的承诺:

    jest.fn().mockImplementation(() => return Promise.resolve('mock'))
    

    更多信息https://jestjs.io/docs/mock-functions

    【讨论】:

    • 这将如何涵盖每个块中的逻辑和副作用?
    • 单元测试的重点是测试你的“单元”很可能是你的函数,而不是你的 api,你可以在每次测试时更改模拟函数的输出来测试每个案例
    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 2020-04-21
    相关资源
    最近更新 更多