mirror of
https://github.com/vitest-dev/vitest.git
synced 2025-12-08 18:26:03 +00:00
95 lines
2.0 KiB
TypeScript
95 lines
2.0 KiB
TypeScript
import { expect, test } from 'vitest'
|
|
|
|
interface CustomMatchers<R = unknown> {
|
|
toBeAsync: (expected: unknown) => Promise<R>;
|
|
toBeDividedBy(divisor: number): R
|
|
}
|
|
|
|
declare module 'vitest' {
|
|
interface Assertion<T = any> extends CustomMatchers<T> {}
|
|
}
|
|
|
|
expect.extend({
|
|
toBeAsync: async function (received, expected) {
|
|
return {
|
|
pass: received === expected,
|
|
message: () => `expected ${received} to be ${expected} (asynchronously)`,
|
|
};
|
|
},
|
|
toBeDividedBy(received, divisor) {
|
|
const pass = received % divisor === 0
|
|
if (pass) {
|
|
return {
|
|
message: () =>
|
|
`expected ${received} not to be divisible by ${divisor}`,
|
|
pass: true,
|
|
}
|
|
}
|
|
else {
|
|
return {
|
|
message: () =>
|
|
`expected ${received} to be divisible by ${divisor}`,
|
|
pass: false,
|
|
}
|
|
}
|
|
},
|
|
})
|
|
|
|
test('basic', () => {
|
|
expect.soft(1).toBe(2)
|
|
expect.soft(2).toBe(3)
|
|
})
|
|
|
|
test('promise', async () => {
|
|
await expect.soft(
|
|
new Promise((resolve) => {
|
|
setTimeout(() => {
|
|
resolve(1)
|
|
})
|
|
}),
|
|
).resolves.toBe(2)
|
|
await expect.soft(
|
|
new Promise((resolve) => {
|
|
setTimeout(() => {
|
|
resolve(2)
|
|
})
|
|
}),
|
|
).resolves.toBe(3)
|
|
})
|
|
|
|
test('with expect', () => {
|
|
expect.soft(1).toEqual(2)
|
|
expect(10).toEqual(20)
|
|
expect.soft(2).toEqual(3)
|
|
})
|
|
|
|
test('with expect.extend', () => {
|
|
expect.soft(1).toEqual(2)
|
|
expect.soft(3).toBeDividedBy(4)
|
|
expect(5).toEqual(6)
|
|
})
|
|
|
|
test('promise with expect.extend', async () => {
|
|
await expect.soft(1 + 1).toBeAsync(3);
|
|
await expect.soft(1 + 2).toBeAsync(3);
|
|
await expect.soft(2 + 2).toBeAsync(3);
|
|
});
|
|
|
|
test('passed', () => {
|
|
expect.soft(1).toEqual(1)
|
|
expect(10).toEqual(10)
|
|
expect.soft(2).toEqual(2)
|
|
})
|
|
|
|
let num = 0
|
|
test('retry will passed', { retry: 1 }, () => {
|
|
expect.soft(num += 1).toBe(3)
|
|
expect.soft(num += 1).toBe(4)
|
|
})
|
|
|
|
num = 0
|
|
test('retry will failed', { retry: 1 }, () => {
|
|
expect.soft(num += 1).toBe(4)
|
|
expect.soft(num += 1).toBe(5)
|
|
})
|