test(zone.js): vitest patch for testing (#68395)

Test `fakeAsync` API in Vitest when Zone.js `vitest` patch applied.

PR Close #68395
This commit is contained in:
hawkgs
2026-04-27 15:30:03 +03:00
committed by Alex Rickabaugh
parent 62c6e3b7ee
commit 9fa4be9d09
5 changed files with 62 additions and 1 deletions
+1
View File
@@ -188,6 +188,7 @@ jobs:
- run: pnpm -C packages/zone.js jest:test
- run: pnpm -C packages/zone.js jest:nodetest
- run: pnpm -C packages/zone.js vitest:test
- run: pnpm -C packages/zone.js vitest-globals:test
- run: pnpm -C packages/zone.js electrontest
- run: pnpm -C packages/zone.js/test/typings test
+1
View File
@@ -174,5 +174,6 @@ jobs:
- run: pnpm -C packages/zone.js jest:test
- run: pnpm -C packages/zone.js jest:nodetest
- run: pnpm -C packages/zone.js vitest:test
- run: pnpm -C packages/zone.js vitest-globals:test
- run: pnpm -C packages/zone.js electrontest
- run: pnpm -C packages/zone.js/test/typings test
+2 -1
View File
@@ -35,7 +35,8 @@
"electrontest": "cd test/extra && node electron.js",
"jest:test": "jest --config ./test/jest/jest.config.js",
"jest:nodetest": "jest --config ./test/jest/jest.node.config.js",
"vitest:test": "vitest ./test/vitest/vitest.spec.js",
"vitest:test": "vitest ./test/vitest/*.spec.js --exclude ./test/vitest/*-globals.spec.js",
"vitest-globals:test": "vitest ./test/vitest/*-globals.spec.js --globals",
"promisefinallytest": "mocha ./test/promise/promise.finally.spec.mjs",
"release": "node tools/release.mts"
},
@@ -0,0 +1,58 @@
require('../../../../dist/bin/packages/zone.js/npm_package/bundles/zone.umd.js');
require('../../../../dist/bin/packages/zone.js/npm_package/bundles/zone-testing.umd.js');
// Apply the Vitest patch (i.e. `patchVitest`).
require('../../../../dist/bin/packages/zone.js/npm_package/bundles/vitest-patch.umd.js');
const {fakeAsync, tick} = Zone[Zone.__symbol__('fakeAsyncTest')];
describe('patchVitest `describe`', () => {
test('verify that the patch is installed', () => {
expect(globalThis['vitest']['__zone_patch__']).toBe(true);
});
// Expect `beforeEach` to be patched and working with `fakeAsync`.
beforeEach(fakeAsync(() => {
expect(createAsyncTesterFlag()).toBe(true);
}));
// Expect `afterEach` to be patched and working with `fakeAsync`.
afterEach(fakeAsync(() => {
expect(createAsyncTesterFlag()).toBe(true);
}));
// Expect `beforeAll` to be patched and working with `fakeAsync`.
beforeAll(fakeAsync(() => {
expect(createAsyncTesterFlag()).toBe(true);
}));
// Expect `afterAll` to be patched and working with `fakeAsync`.
afterAll(fakeAsync(() => {
expect(createAsyncTesterFlag()).toBe(true);
}));
it('expect `it` to be patched and working with `fakeAsync`', fakeAsync(() => {
expect(createAsyncTesterFlag()).toBe(true);
}));
test('expect `it` to be patched and working with `fakeAsync`', fakeAsync(() => {
expect(createAsyncTesterFlag()).toBe(true);
}));
});
suite('patchVitest `suite`', () => {
it('should work with a patched `suite`', fakeAsync(() => {
expect(createAsyncTesterFlag()).toBe(true);
}));
});
function createAsyncTesterFlag() {
let flag = false;
setTimeout(() => {
flag = true;
}, 100);
tick(110);
return flag;
}