【发布时间】:2016-01-07 03:56:12
【问题描述】:
我正在使用带有 Promise 的 Mongoose,用 bluebird 的方法包装它:
var mongoose = promise.promisifyAll(require('mongoose'))
然后我尝试使用异步方法:
var newUser = new User({email: 'd@a.com', password: '123', userType: 'admin', name: 'paco'});
newUser.saveAsync()
.then(function (createdUser) {
console.log(createdUser);
should.exist(createdUser);
done();
})
.catch(function (err) {
console.log(err);
should.not.exist(err);
done();
});
但是,由于架构获得了电子邮件字段的唯一索引,如果我尝试多次运行此操作,则会抛出 Unhandled rejection AssertionError: expected Error 导致一切失败。
如何正确处理任何错误?
【问题讨论】:
-
should.not.exist(err);将在有err时抛出AssertionError,这会导致您的测试失败。 -
@Bergi 我应该如何处理它?我只等待它假设测试失败,而不是打破它
-
所以
.catch(done)在语义上意味着无错误测试? -
什么是
done,一些测试框架回调?.catch(done)将导致调用done处理程序,并将任何异常作为第一个参数,这通常会导致相应的测试失败。它将防止未处理的拒绝。 -
done是 mocha 的it块回调
标签: javascript mocha.js should.js