我想对一些排队等待两个代码的代码进行存根。
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
?谢谢
答案 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) {
...
}
通过这种方法,您可以在单元测试中测试功能时直接传递伪造品,但是在您的应用程序代码中,它将默认为导入的真实商品。