Как уже указывалось здесь , более новые версии Mocha уже осведомлены о Promise. Но поскольку ОП задал конкретно вопрос о Чай, справедливо отметить пакет chai-as-promised
, который обеспечивает чистый синтаксис для тестирования обещаний:
как вы можете использовать chai-as-обещали протестировать оба случая resolve
и reject
для обещания:
var chai = require('chai');
var expect = chai.expect;
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
...
it('resolves as promised', function() {
return expect(Promise.resolve('woof')).to.eventually.equal('woof');
});
it('rejects as promised', function() {
return expect(Promise.reject('caw')).to.be.rejectedWith('caw');
});
Чтобы сделать это действительно ясно, что тестируется, вот тот же пример, закодированный без chai-as-обещал:
it('resolves as promised', function() {
return Promise.resolve("woof")
.then(function(m) { expect(m).to.equal('woof'); })
.catch(function(m) { throw new Error('was not supposed to fail'); })
;
});
it('rejects as promised', function() {
return Promise.reject("caw")
.then(function(m) { throw new Error('was not supposed to succeed'); })
.catch(function(m) { expect(m).to.equal('caw'); })
;
});
Я думаю, что лучший путь состоит в том, чтобы пользоваться этой библиотекой. Это помогает сериализировать/десериализовать object/json.
https://www.npmjs.com/package / peerlancers/json-serialization