Обратный вызов done
в Mocha специально предназначен для тестирования асинхронного кода и не предназначен для непосредственного контроля за успехом или неудачей.
Ваши основные средства, вызывающие сбой теста, должны быть выброшены объектами Error,в идеале с сообщениями, указывающими причину сбоя. Утверждения - это операторы, которые будут выдавать такие ошибки, если какое-либо конкретное условие не было выполнено.Для этого существует множество библиотек, из которых chai является наиболее популярным, насколько мне известно.
Сам Sinon поставляется с некоторыми утверждениями для использования с егоТест удваивается.Например, если вы хотите утверждать, что cb1Spy
был вызван один раз, вы должны написать это:
sinon.assert.calledOnce(cb1Spy);
Если вы в конечном итоге используете chai, есть хороший плагин под названием sinon-chai , который вы можете использовать, чтобы утверждения sinon выглядели более похожими на утверждения chai, придавая вашим тестам более согласованный синтаксис.Если вы используете его, вы можете написать свой тест следующим образом:
const chai = require('chai');
const sinon = require('sinon');
const sinonChai = require('sinon-chai');
const { expect } = chai;
chai.use(sinonChai);
describe('whatever', function() {
it('test', function() {
let cb1Spy = sinon.spy();
let cb2Spy = sinon.spy();
f(cb1Spy, cb2spy);
expect(cb1Spy).to.have.been.calledOnce;
expect(cb2Spy).to.have.been.calledOnce;
});
});