如何在使用 mocha 和 chai 承诺解决后测试 class 的属性

How to test for a propety of a class after promise resolution with mocha and chai

我正在按照承诺尝试使用 Mocha + Chai 进行一些单元测试

'use strict';
var chai = require('chai').use(require('chai-as-promised'))
var should = chai.should();


describe('Testing how promises work', () => {
    it("should work right", function(){
        class SomeClass {
            constructor() {
                this.x = 0;
            }
            getSomething(inputVal) {
                let self = this;
                return new Promise((resolve, reject) => {
                    setTimeout(function(){
                        if(inputVal){
                            self.x = 1;
                            resolve();
                        }
                        else{
                            self.x = -1;
                            reject();
                        }

                    }, 10);
                });
            }
        }

        var z = new SomeClass();

        return z.getSomething(true).should.eventually.be.fulfilled
    });
});

测试确实通过了。但是我想在承诺解决后检查 z.x equals 1 的值。我该怎么做?

这只是一个原型。我想在真实案例中测试更多 属性

chai-as-promised 添加到 Chai 的断言本身就是承诺。因此,您可以对这些断言调用 .then。因此,在您的情况下,将 return 更改为:

return z.getSomething(true).should.eventually.be.fulfilled
    .then(() => z.should.have.property("x").equal(1));