繁体   English   中英

承诺被拒绝或实现混乱

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM