如何在使用 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));
我正在按照承诺尝试使用 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));