У меня есть такой промежуточный класс
// code.js
function validation(req, res, next) {
if (validationLogic(req)) {
res.send(400);
return next(false);
}
return next();
}
// code.test.js
describe('validation', () => {
describe('when req is valid', () => {
//setting up req, res, next stub
//some other test
//HERE IS MY QUESTION, how do I text that validation returns next(), and not next(false)
it('return next(), and next() is called exactly once', () => {
const spy = sinon.spy();
nextStub = spy;
const result = validation(reqStub, resStub, nextStub);
assert(spy.calledOnceWithExactly());
assert(result === nextStub()); // both of this
assert(result === nextStub(false)); // and this line passed
});
});
});
Я пытался проверить, возвращает ли моя функция validation
next()
, а не next(false)
.Но в тесте похоже, что только assert(spy.calledOnceWithExactly())
может проверить параметр в next
.Но строка, следующая за assert(result === nextStub())
, не может ничего проверить, кроме того, что результат фактически получен из функции next()
Достаточно ли assert(spy.calledOnceWithExactly())
или есть другой способ проверить это?