Instead of manually writing many test cases for a promise
return Promise.all([
doSomethingAsync().should.eventually.have.deep.property('foo'),
doSomethingAsync().should.eventually.have.deep.property('bar'),
doSomethingAsync().should.eventually.have.deep.property('foobar')
])
you can write code that expresses what you really mean:
return doSomethingAsync().should
.eventually.have.deep.property('foo')
.also.have.deep.property('bar')
.also.have.deep.property('foobar')
.exec()
In case .also
is same as .eventually
and .to.eventually
, after all
you must call .exec()
at the end of chain
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised')
var alsoChain = require('chai-as-promised-also-chain')
chai.use(chaiAsPromised)
chai.use(alsoChain)
var expect = chai.expect;
// OR
var should = chai.should();
expect(Promise.resolve({name: { first: 'maung', last: 'hla' }, age: 20}))
.to.eventually
.have.deep.property('name.first')
.that.equal('maung')
.also
.have.all.keys(['name', 'age'])
.exec()
Promise.resolve({name: { first: 'maung', last: 'hla' }, age: 20}))
.should.eventually
.have.deep.property('name.first')
.that.equal('maung')
.also
.have.all.keys(['name', 'age'])
.exec()
promise.should
.eventually.have.deep.property('name')
.also.contain.all.keys(['name', 'age'])
.notify(done) // this assertion is call for all promise in chain