[英]Promise rejected or fulfilled confusion
我有一个承诺功能
create(data) {
return new Promise((resolve, reject) => {
const datetime = Date.parse(new Date());
data.createdAt = datetime;
data.updatedAt = datetime;
this._db.collection(this._table).insertOne(data, (err) => {
if (err) {
this._logger.error(err);
reject(err);
} else {
resolve(data);
}
});
});
}
并为此编写单元测试
it('should reject insertion', () => {
const promise = Agent.create(data).then(() => (Agent.create(data)));
return expect(promise).to.be.rejected;
});
这个断言通过了。 但是,如果单元测试是:
it('should reject insertion', () => {
const promise = Agent.create(data).then(Agent.create(data));
return expect(promise).to.be.rejected;
});
它失败。 错误为AssertionError: expected promise to be rejected but it was fulfilled with { Object (_id, role, ...) }
这两种做法有何区别? 我还没明白
正如许多评论所指出的,在第一种情况下,您传递了一个函数,在另一种情况下,您传递了返回值,这是一个承诺。 这就是您看到结果差异的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.