Я пишу тест для функции async
, которая выполняет ряд задач и в какой-то момент ждет 60 секунд, прежде чем выполнить еще несколько задач. Я пытаюсь использовать sinon.useFakeTimers()
, чтобы пропустить эти 60 секунд, чтобы я мог проверить логику после задержки.
foo.js
module.exports.foo = async f => {
// ... more code ...
await new Promise((resolve, reject) => {
setTimeout(resolve, 60000);
});
// ... more code ...
f();
// ... more code ...
};
тест-foo.js
const sinon = require('sinon');
const expect = require('chai').expect;
const { foo } = require('./foo');
describe('Module Foo ', function() {
it('call function after 1 minute', function() {
var clock = sinon.useFakeTimers();
const bar = sinon.stub();
foo(bar);
expect(bar.called).to.be.false;
clock.tick(100000);
expect(bar.called).to.be.true; // this one fails
});
});
Я пытался поместить sinon.useFakeTimers();
в других местах, но Обещание не разрешается, и заглушку, которую я передаю в foo
, не вызывают.