我正在使用Mocha框架在Node.js中编写测试。由于我正在测试的端点是异步的,因此我使用了aync-await概念。但是测试用例不是在等待before()执行部分完成运行,即;异步功能,因此显示listAll()api的结果错误。
async function fetchContent() {
const [profile, user] = await Promise.all([api.profiles.list(), api.users.list()])
params = {userId: user.items[0].id, label: 'Test', profileId: profile.items[0].id, token: authToken}
testApi = new Api(params)
testApi.profiles.create(params)
}
before(async () => {
await fetchContent()
})
describe('Profiles API', () => {
it('list profiles', done => {
testApi.profiles.listAll().then(response => {
console.log('list=', response)
})
done()
})
})
我也像下面一样尝试过它(),但listAll()仍然不显示在before()执行过程中创建的配置文件记录:
describe('Profiles API', () => {
it('list profiles', async () => {
const response = await testApi.profiles.listAll()
console.log('list=', response)
})
答案 0 :(得分:1)
您应该await
进行fecthContent
内部的最后一次调用,因为它是异步的,否则测试将在完成之前开始。 beforeEach
允许您返回承诺以等待其完成(请参阅Mocha文档)。
async function fetchContent() {
const [profile, user] = await Promise.all([
api.profiles.list(),
api.users.list()
]);
params = {
userId: user.items[0].id,
label: "Test",
profileId: profile.items[0].id,
token: authToken
};
testApi = new Api(params);
// This call is asynchronous we have to wait
await testApi.profiles.create(params);
}