Javascript 如何测试(使用Jest)返回包含另一个承诺的承诺的函数

Javascript 如何测试(使用Jest)返回包含另一个承诺的承诺的函数,javascript,promise,axios,jestjs,es6-promise,Javascript,Promise,Axios,Jestjs,Es6 Promise,因此,我想测试(使用Jest)一个函数,该函数返回一个包含axios请求的承诺(作为另一个嵌套承诺),并在然后和catch块中解析外部承诺 该功能与此类似: fetchFunction() { return new Promise((resolve, reject) => { if (!this.valid) { this.value = 1; return resolve(); }

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

该功能与此类似:

   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);
          });
      });
    },

如果您谈论的是单元测试,那么不应该在同一个测试中同时测试这两个单元

Ie您对fetchFunction()方法的测试将有一部分用于模拟
this.someModel.$get()
函数

您可以创建一个模拟函数,该函数返回一个承诺,如e thant:

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

有关

的更多信息,这将如何涵盖每个块中的逻辑和副作用?单元测试的重点是测试“单元”,很可能是您的函数,而不是api,您可以在每次测试中更改模拟函数的输出,以测试每种情况