Skip to content

Commit 9fa4be9

Browse files
hawkgsalxhub
authored andcommitted
test(zone.js): vitest patch for testing (#68395)
Test `fakeAsync` API in Vitest when Zone.js `vitest` patch applied. PR Close #68395
1 parent 62c6e3b commit 9fa4be9

5 files changed

Lines changed: 62 additions & 1 deletion

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ jobs:
188188
- run: pnpm -C packages/zone.js jest:test
189189
- run: pnpm -C packages/zone.js jest:nodetest
190190
- run: pnpm -C packages/zone.js vitest:test
191+
- run: pnpm -C packages/zone.js vitest-globals:test
191192
- run: pnpm -C packages/zone.js electrontest
192193
- run: pnpm -C packages/zone.js/test/typings test
193194

.github/workflows/pr.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,5 +174,6 @@ jobs:
174174
- run: pnpm -C packages/zone.js jest:test
175175
- run: pnpm -C packages/zone.js jest:nodetest
176176
- run: pnpm -C packages/zone.js vitest:test
177+
- run: pnpm -C packages/zone.js vitest-globals:test
177178
- run: pnpm -C packages/zone.js electrontest
178179
- run: pnpm -C packages/zone.js/test/typings test

packages/zone.js/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@
3535
"electrontest": "cd test/extra && node electron.js",
3636
"jest:test": "jest --config ./test/jest/jest.config.js",
3737
"jest:nodetest": "jest --config ./test/jest/jest.node.config.js",
38-
"vitest:test": "vitest ./test/vitest/vitest.spec.js",
38+
"vitest:test": "vitest ./test/vitest/*.spec.js --exclude ./test/vitest/*-globals.spec.js",
39+
"vitest-globals:test": "vitest ./test/vitest/*-globals.spec.js --globals",
3940
"promisefinallytest": "mocha ./test/promise/promise.finally.spec.mjs",
4041
"release": "node tools/release.mts"
4142
},
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
require('../../../../dist/bin/packages/zone.js/npm_package/bundles/zone.umd.js');
2+
require('../../../../dist/bin/packages/zone.js/npm_package/bundles/zone-testing.umd.js');
3+
4+
// Apply the Vitest patch (i.e. `patchVitest`).
5+
require('../../../../dist/bin/packages/zone.js/npm_package/bundles/vitest-patch.umd.js');
6+
7+
const {fakeAsync, tick} = Zone[Zone.__symbol__('fakeAsyncTest')];
8+
9+
describe('patchVitest `describe`', () => {
10+
test('verify that the patch is installed', () => {
11+
expect(globalThis['vitest']['__zone_patch__']).toBe(true);
12+
});
13+
14+
// Expect `beforeEach` to be patched and working with `fakeAsync`.
15+
beforeEach(fakeAsync(() => {
16+
expect(createAsyncTesterFlag()).toBe(true);
17+
}));
18+
19+
// Expect `afterEach` to be patched and working with `fakeAsync`.
20+
afterEach(fakeAsync(() => {
21+
expect(createAsyncTesterFlag()).toBe(true);
22+
}));
23+
24+
// Expect `beforeAll` to be patched and working with `fakeAsync`.
25+
beforeAll(fakeAsync(() => {
26+
expect(createAsyncTesterFlag()).toBe(true);
27+
}));
28+
29+
// Expect `afterAll` to be patched and working with `fakeAsync`.
30+
afterAll(fakeAsync(() => {
31+
expect(createAsyncTesterFlag()).toBe(true);
32+
}));
33+
34+
it('expect `it` to be patched and working with `fakeAsync`', fakeAsync(() => {
35+
expect(createAsyncTesterFlag()).toBe(true);
36+
}));
37+
38+
test('expect `it` to be patched and working with `fakeAsync`', fakeAsync(() => {
39+
expect(createAsyncTesterFlag()).toBe(true);
40+
}));
41+
});
42+
43+
suite('patchVitest `suite`', () => {
44+
it('should work with a patched `suite`', fakeAsync(() => {
45+
expect(createAsyncTesterFlag()).toBe(true);
46+
}));
47+
});
48+
49+
function createAsyncTesterFlag() {
50+
let flag = false;
51+
setTimeout(() => {
52+
flag = true;
53+
}, 100);
54+
55+
tick(110);
56+
57+
return flag;
58+
}
File renamed without changes.

0 commit comments

Comments
 (0)