Я использую Sinon с Mocha для проверки значений даты истечения срока действия. Я использовал тот же код несколько месяцев назад, и он работал нормально, но где-то между v1.12.x и v1.17.x, что-то изменилось, и я не могу найти правильный путь.Sinon useFakeTimers() создает таймаут в before/afterEach
let sinon = require('sinon');
describe('USER & AUTHENTICATION ENDPOINTS', function(done) {
beforeEach(function() {
this.clock = sinon.useFakeTimers(new Date().getTime());
return fixtures.load(data);
});
afterEach(function() {
this.clock.restore();
return fixtures.clear(data);
});
context('POST /users', function() { ... }
});
- Я попытался с и без
new Date().getTime()
аргумента. - Я пробовал пропустить и явно позвонить
done()
. - Я попытался удалить мои загрузки/очистки процессов.
Конечный результат всегда одинаков:
Error: timeout of 5000ms exceeded. Ensure the done() callback is being called in this test.
Что-то изменилось, что я просто не заметил в документации? Есть ли у меня какая-то ошибка, которую я не вижу?
Любые мысли будут оценены.
UPDATE
Так немного больше информации здесь. Это явно имеет отношение к моему коду, но я в недоумении.
Если я прокомментирую каждый фактический тест, тесты пройдут и дадут мне зеленый «0 проход».
Если я запускаю сам тест, даже тот, который только это:
context('POST /users', function() {
it('should create a new user', function(done) {
done();
})
});
Я обратно на тайм-аут. Что мне не хватает?
Да, это была хотя бы часть проблемы, но, похоже, не проблема. Убрав его, я все еще вижу ту же проблему. –
Я провел тест самостоятельно с помощью sinon 1.17.3, и я прокомментировал ваши строки fixtures.load() и fixtures.clear(). Для меня тест зеленый без тайм-аутов. Так может быть, что-то странное происходит в этих строках? – Nicole
(И, честно говоря, тест даже зеленый с параметром «done» в самом дальнем описании ...) – Nicole