我正在使用Mongoose的承诺,用蓝鸟的方法将其包裹起来:
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
,导致它们全部失败。
如何妥善处理任何错误?
答案 0 :(得分:0)
首先,如果您尝试在每个测试中插入相同的数据,则只能进行第一次测试运行,因此您必须在每次测试运行之前清除数据库或删除此特定记录。
beforeEach(function() {
return Model.findOneAndRemove({email: 'd@a.com'})
});
Mocha现在支持promises,因此不需要完成回调。您的测试可以重写为:
var newUser = new User({
email: 'd@a.com',
password: '123',
userType: 'admin',
name: 'paco'
});
return newUser.saveAsync().should.eventually.be.fulfilled();
// or return newUser.saveAsync().should.eventually.be.equal(value);