Глобальные методы setInterval
и setTimeout
различаются в браузере (окно) и NodeJS (глобально). Поведение совершенно одинаковое. Оба делают то же самое.
См. Документы о NodeJS и Браузер . В Node возвращаемое значение является экземпляром класса Timeout. Методы браузера возвращают только число, идентификатор обработчика.
Как работать с этой разницей, если вы разрабатываете для браузеров, но тестируете с Node, потому что ядром test-framework является узел (например, Jest). Нужно ли переключаться на тестовый движок браузера?
(кстати) Кроме того, в моем случае я ограничиваю все глобальные переменные. Поэтому я должен получить доступ только по имени области. например window.setInterval
или global.setInterval
не просто setInterval
. (Это правило tslint no-restricted-globals
)
В любом случае существует конфликт типов между функциями таймера узла и браузера.
Есть хорошая практика, чтобы справиться с этим? Нужно ли переключать мой тестовый двигатель? Но в конце концов они делают то же самое. Может быть, я должен привести к любому типу?
Я знаю, что это не спецификация JavaScript. Это зависимость от окружающей среды. Я не говорю, что они должны быть точно такими же. Мне просто интересно, как с этим бороться, когда я запускаю модульные тесты на node-js, но я разрабатываю для браузера. В настоящее время только возвращаемые значения отличаются. Само поведение кажется равным.