Sur*_*ati 6 mocha.js node.js async-await
我正在练习基本的单元测试用例,mocha并且有点困惑如何使用WHO和WHEN来使用done()处理程序。
done()?以下是我无法使用的示例代码done:
it('Testing insertDocumentWithIndex', async (done) => {
try{
var data = await db.insertDocumentWithIndex('inspections', {
"inspectorId" : 1,
"curStatus" : 1,
"lastUpdatedTS" : 1535222623216,
"entryTS" : 1535222623216,
"venueTypeId" : 1,
"location" : [
45.5891279,
-45.0446183
]
})
expect(data.result.n).to.equal(1);
expect(data.result.ok).to.equal(1);
}
catch(e){
logger.error(e);
done(e);
}
})
Run Code Online (Sandbox Code Playgroud)
当我运行时,它失败并引发错误-
错误:超时超过2000毫秒。对于异步测试和挂钩,请确保调用了“ done()”;如果返回承诺,请确保其解决。
但是done应该仅在失败的情况下被调用(原谅我,如果我说的是不正确的话,我是初学者),这是我做的catch阻塞,并且是返回到Promise的第二点,效果很好。见下面的代码
it('Testing insertDocumentWithIndex', async () => {
return new Promise(async (resolve, reject) => {
try{
var data = await db.insertDocumentWithIndex('inspections', {
"inspectorId" : 1,
"curStatus" : 1,
"lastUpdatedTS" : 1535222623216,
"entryTS" : 1535222623216,
"venueTypeId" : 1,
"location" : [
45.5891279,
-45.0446183
]
})
expect(data.result.n).to.equal(1);
expect(data.result.ok).to.equal(1);
resolve()
}
catch(e){
reject(e);
}
})
});
Run Code Online (Sandbox Code Playgroud)
但这需要附加的Promise构造代码,但这不是问题。但这提出了另一个问题
done应该使用?任何更好的编写测试用例方法的帮助或建议mocha都将有所帮助。
正确的方法是不要使用donewith async..await。Mocha 支持 promises 并且能够链接一个从it等函数返回的 promise 。而async功能是,它总是返回一个承诺函数语法糖:
it('Testing insertDocumentWithIndex', async () => {
var data = await db.insertDocumentWithIndex('inspections', {
"inspectorId" : 1,
"curStatus" : 1,
"lastUpdatedTS" : 1535222623216,
"entryTS" : 1535222623216,
"venueTypeId" : 1,
"location" : [
45.5891279,
-45.0446183
]
})
expect(data.result.n).to.equal(1);
expect(data.result.ok).to.equal(1);
})
Run Code Online (Sandbox Code Playgroud)
done仅在测试异步 API 时才需要,而不涉及承诺。即便如此,转换为 promise 通常会导致更清晰的控制流。
和这个
it('Testing insertDocumentWithIndex', async () => {
return new Promise(async (resolve, reject) => {
...
Run Code Online (Sandbox Code Playgroud)
是promise构造反模式,由于asyncpromise构造函数回调,情况更糟。
这些问题也适用于其他具有类似 API 的 JS 测试框架,Jest 和 Jasmine。
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |