Есть ли способ издеваться над идентификатором, который возвращает setInterval(...)?
Некритичные детали для любопытства:
Я тестирую действие преобразователя, которое передает этот идентификатор в глобальное состояние Redux (для сброса интервала позже при другом действии). Поэтому в тестах я хотел бы утверждать, что мое действие было отправлено с точно таким же идентификатором, который был возвращен из setInterval(...).
В настоящее время я использую jest.UseFakeTimers(), но, похоже, нет API для имитации идентификатора интервала, и после просмотра фиктивного хранилища мое действие отправляется с undefined в качестве полезной нагрузки идентификатора интервала.
Можете ли вы предоставить пару фрагментов кода, которые показывают ваши издевательства и т. д.?
@KarlM см. Мой собственный ответ на этот вопрос, он предоставляет фрагмент.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы назначите setInterval переменной, эта переменная будет содержать идентификатор. Проверьте это с помощью var x = setInterval(() => console.info(x), 500); в консоли. Хотя не уверен, как использовать это с jest.UseFakeTimers ... предположим, что назначение должно быть в обратном вызове.
Я нашел способ сделать это, все еще используя API jest для подделки таймеров.
const expectedIntervalId = 42;
jest.useFakeTimers();
setIntervalMock = (setInterval as jest.Mock);
setIntervalMock.mockImplementation(() => expectedIntervalId);
(NB: я использую TypeScript)
Тогда я могу, например, убедитесь, что clearInterval был вызван с тем же идентификатором, который был возвращен имитируемой функцией.
Не могли бы вы просто смоделировать поддельный
setInterval(), который возвращает случайное число, илиnew Date().getTime()?