3 回答
TA贡献1784条经验 获得超8个赞
这是我的看法:
运用 async/await
不需要额外的柴模块
避免捕获问题,@ TheCrazyProgrammer在上面指出
延迟的promise函数,如果延迟为0则失败:
const timeoutPromise = (time) => {
return new Promise((resolve, reject) => {
if (time === 0)
reject({ 'message': 'invalid time 0' })
setTimeout(() => resolve('done', time))
})
}
// ↓ ↓ ↓
it('promise selftest', async () => {
// positive test
let r = await timeoutPromise(500)
assert.equal(r, 'done')
// negative test
try {
await timeoutPromise(0)
// a failing assert here is a bad idea, since it would lead into the catch clause…
} catch (err) {
// optional, check for specific error (or error.type, error. message to contain …)
assert.deepEqual(err, { 'message': 'invalid time 0' })
return // this is important
}
assert.isOk(false, 'timeOut must throw')
log('last')
})
积极的测试相当简单。意外故障(模拟500→0)会自动失败,因为被拒绝的承诺会升级。
否定测试使用try-catch-idea。但是:'抱怨'不希望的传递只发生在catch子句之后(这样,它不会在catch()子句中结束,触发进一步但误导性的错误。
要使此策略起作用,必须从catch子句返回测试。如果你不想测试其他任何东西,请使用另一个() - 阻止。
- 3 回答
- 0 关注
- 807 浏览
添加回答
举报