Skip to content

Commit 66eb36c

Browse files
committed
Minimal example showing the issue with setimmediate shim
1 parent 3fe3b76 commit 66eb36c

3 files changed

Lines changed: 19 additions & 0 deletions

File tree

jest-setup.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import './src/__tests__/setImmediateShim'
12
import { resetToDefaults, configure } from './src/pure';
23

34
beforeEach(() => {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { setImmediate, setTimeout } from '../helpers/timers';
2+
3+
describe('runWithRealTimers', () => {
4+
test('real setImmediate is called when timers are fake', async () => {
5+
jest.useFakeTimers({ legacyFakeTimers: false });
6+
const timeout = new Promise((_, reject) => setTimeout(reject, 1000))
7+
const immediate = new Promise(resolve => setImmediate(resolve))
8+
const result = await Promise.race([timeout, immediate])
9+
.then(() => 'resolve')
10+
.catch(() => 'reject')
11+
expect(result).toEqual('resolve')
12+
});
13+
});

src/__tests__/setImmediateShim.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const globalObj = typeof window === 'undefined' ? global : window;
2+
// @ts-expect-error
3+
globalObj.setImmediate = function(fn: () => void) {
4+
return globalObj.setTimeout(fn, 0);
5+
}

0 commit comments

Comments
 (0)