我想存根一些有两个等待的代码。
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
? 谢谢
尽管示例中的 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) {
...
}
通过这种方式,您可以在单元测试中测试函数时直接传入您的假货,但在您的应用程序代码中,它将默认为导入的真实函数。