mirror of
https://github.com/hanzoai/vitest.git
synced 2026-09-24 17:04:25 +00:00
166 lines
3.7 KiB
TypeScript
166 lines
3.7 KiB
TypeScript
import { expect, test, vi } from "vitest";
|
|
|
|
const myEqual = vi.defineHelper((a: any, b: any) => {
|
|
expect(a).toEqual(b);
|
|
});
|
|
|
|
const myEqualAsync = vi.defineHelper(async (a: any, b: any) => {
|
|
await new Promise((r) => setTimeout(r, 1));
|
|
expect(a).toEqual(b);
|
|
});
|
|
|
|
const myEqualSoft = vi.defineHelper((a: any, b: any) => {
|
|
expect.soft(a).toEqual(b);
|
|
});
|
|
|
|
const myEqualSoftAsync = vi.defineHelper(async (a: any, b: any) => {
|
|
await new Promise((r) => setTimeout(r, 1));
|
|
expect.soft(a).toEqual(b);
|
|
});
|
|
|
|
test("sync", () => {
|
|
myEqual("sync", "x");
|
|
});
|
|
|
|
test("async", async () => {
|
|
await myEqualAsync("async", "x");
|
|
});
|
|
|
|
test("soft", () => {
|
|
myEqualSoft("soft", "x");
|
|
});
|
|
|
|
test("soft async", async () => {
|
|
await myEqualSoftAsync("soft async", "x");
|
|
});
|
|
|
|
// Nested helpers: outermost marker wins
|
|
const innerHelper = vi.defineHelper((a: any, b: any) => {
|
|
expect(a).toEqual(b);
|
|
});
|
|
const outerHelper = vi.defineHelper((a: any, b: any) => {
|
|
innerHelper(a, b);
|
|
});
|
|
|
|
test("nested", () => {
|
|
outerHelper("nested", "x");
|
|
});
|
|
|
|
// Helper that passes
|
|
test("pass sync", () => {
|
|
myEqual(1, 1);
|
|
});
|
|
|
|
test("pass async", async () => {
|
|
await myEqualAsync(1, 1);
|
|
});
|
|
|
|
// Helper returning value
|
|
const myAdd = vi.defineHelper((a: number, b: number) => {
|
|
return a + b;
|
|
});
|
|
const myAddAsync = vi.defineHelper(async (a: number, b: number) => {
|
|
await new Promise((r) => setTimeout(r, 1));
|
|
return a + b;
|
|
});
|
|
|
|
test("return sync", () => {
|
|
expect(myAdd(1, 2)).toBe(3);
|
|
});
|
|
|
|
test("return async", async () => {
|
|
expect(await myAddAsync(1, 2)).toBe(3);
|
|
});
|
|
|
|
// Multiple soft errors in one test
|
|
test("multiple soft", () => {
|
|
myEqualSoft("first", "x");
|
|
myEqualSoft("second", "y");
|
|
});
|
|
|
|
// Custom error in helper
|
|
const throwCustom = vi.defineHelper(() => {
|
|
throw new Error("custom error from helper");
|
|
});
|
|
|
|
test("custom error", () => {
|
|
throwCustom();
|
|
});
|
|
|
|
// non-helper wrapper calling a helper: stack should include the wrapper
|
|
function assertEqualValues(a: any, b: any) {
|
|
myEqual(a, b);
|
|
}
|
|
|
|
test("non-helper wrapper", () => {
|
|
assertEqualValues("wrapper", "x");
|
|
});
|
|
|
|
// printConsoleTrace also hides internal stacks
|
|
const myHelperWithLogs = vi.defineHelper(() => {
|
|
console.error("[test-myHelperWithLogs]");
|
|
});
|
|
|
|
test("helper with logs", () => {
|
|
myHelperWithLogs();
|
|
});
|
|
|
|
const helperObject = {
|
|
prop: 1234,
|
|
assertEqualProp: vi.defineHelper(function (this: any, actual: any) {
|
|
expect(actual).toEqual(this.prop);
|
|
}),
|
|
assertEqualPropAsync: vi.defineHelper(async function (this: any, actual: any) {
|
|
await new Promise((r) => setTimeout(r, 1));
|
|
expect(actual).toEqual(this.prop);
|
|
}),
|
|
}
|
|
|
|
test("helper with context pass", () => {
|
|
helperObject.assertEqualProp(1234);
|
|
});
|
|
|
|
test("helper with context fail", () => {
|
|
helperObject.assertEqualProp(4321);
|
|
});
|
|
|
|
test("async helper with context pass", async () => {
|
|
await helperObject.assertEqualPropAsync(1234);
|
|
});
|
|
|
|
test("async helper with context fail", async () => {
|
|
await helperObject.assertEqualPropAsync(4321);
|
|
});
|
|
|
|
const checkWithWaitFor = vi.defineHelper(async () => {
|
|
await vi.waitFor(() => {
|
|
expect(1).toBe(2);
|
|
}, { timeout: 20, interval: 10 });
|
|
});
|
|
|
|
const checkWithWaitUntil = vi.defineHelper(async () => {
|
|
await vi.waitUntil(() => {
|
|
expect(1).toBe(2);
|
|
}, { timeout: 20, interval: 10 });
|
|
});
|
|
|
|
const throwPlainAsyncError = vi.defineHelper(async () => {
|
|
await new Promise((_resolve, reject) => {
|
|
setTimeout(() => {
|
|
reject(new Error("async error from helper"));
|
|
}, 1);
|
|
});
|
|
});
|
|
|
|
test("waitFor keeps helper callsite", async () => {
|
|
await checkWithWaitFor();
|
|
});
|
|
|
|
test("waitUntil keeps helper callsite", async () => {
|
|
await checkWithWaitUntil();
|
|
});
|
|
|
|
test("plain async error", async () => {
|
|
await throwPlainAsyncError();
|
|
});
|