如何使用sinon在一行中测试两个等待

时间:2019-08-01 02:34:49

标签: mocha sinon

我想对一些排队等待两个代码的代码进行存根。


import { githubApi } from "../../githubApi";

export async function getMembers (projectName) {
  const members = await (await githubApi(projectName)).projects
    .members({
      id: 'xxx'
    });
  return members;
}

如何使用sinon模拟await (await githubApi(projectName)).projects .member?谢谢

1 个答案:

答案 0 :(得分:0)

尽管示例中的API似乎很难测试,但我将假定已将其考虑在内,并且在某种程度上githubApi是可模拟的。

let membersFake = sinon.fake().resolves([member1, member2, member3]);
let githubApiFake = sinon.fake().resolves({
  projects: {
    members: membersFake
  }
});

然后,您可以将githubApi替换为假的。现在,如果githubApi不容易模拟并且您不拥有该文件,那么也许值得研究一下依赖注入。

export async function getMembers (projectName, githubApi = githubApi) {
  ...
}

通过这种方法,您可以在单元测试中测试功能时直接传递伪造品,但是在您的应用程序代码中,它将默认为导入的真实商品。