Skip to content

Commit fa41505

Browse files
authored
fix(expect): fix expect().resolves/rejects chain typings (#7273)
1 parent 149380b commit fa41505

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

packages/expect/src/types.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -622,9 +622,7 @@ type VitestAssertion<A, T> = {
622622

623623
type Promisify<O> = {
624624
[K in keyof O]: O[K] extends (...args: infer A) => infer R
625-
? O extends R
626-
? Promisify<O[K]>
627-
: (...args: A) => Promise<R>
625+
? Promisify<O[K]> & ((...args: A) => Promise<R>)
628626
: O[K];
629627
}
630628

test/core/test/jest-expect.test.ts

+13
Original file line numberDiff line numberDiff line change
@@ -1172,6 +1172,19 @@ describe('async expect', () => {
11721172
expect(error).toMatchObject({ message: 'promise rejected "+0" instead of resolving' })
11731173
}
11741174
})
1175+
1176+
it('chainable types', async () => {
1177+
/* eslint-disable prefer-promise-reject-errors */
1178+
await expect(Promise.resolve(1)).resolves.toBeOneOf([1])
1179+
await expect(Promise.resolve(1)).resolves.not.toBeOneOf([2])
1180+
await expect(Promise.reject(1)).rejects.toBeOneOf([1])
1181+
await expect(Promise.reject(1)).rejects.not.toBeOneOf([2])
1182+
await expect(Promise.resolve(1)).resolves.toSatisfy(v => v === 1)
1183+
await expect(Promise.reject(2)).rejects.toSatisfy(v => v === 2)
1184+
await (expect(Promise.resolve(1)).resolves.to.equal(1) satisfies Promise<any>)
1185+
await (expect(Promise.resolve(1)).resolves.not.to.equal(2) satisfies Promise<any>)
1186+
/* eslint-enable prefer-promise-reject-errors */
1187+
})
11751188
})
11761189

11771190
it('compatible with jest', () => {

0 commit comments

Comments
 (0)