Skip to content

Commit f7da619

Browse files
authoredSep 25, 2024··
fix(expect): fix toBeDefined with expect.poll (#6562)
1 parent ea2d429 commit f7da619

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed
 

‎packages/expect/src/jest-expect.ts

+7-8
Original file line numberDiff line numberDiff line change
@@ -384,14 +384,13 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => {
384384
return this.be.null
385385
})
386386
def('toBeDefined', function () {
387-
const negate = utils.flag(this, 'negate')
388-
utils.flag(this, 'negate', false)
389-
390-
if (negate) {
391-
return this.be.undefined
392-
}
393-
394-
return this.not.be.undefined
387+
const obj = utils.flag(this, 'object')
388+
this.assert(
389+
typeof obj !== 'undefined',
390+
'expected #{this} to be defined',
391+
'expected #{this} to be undefined',
392+
obj,
393+
)
395394
})
396395
def(
397396
'toBeTypeOf',

‎test/core/test/expect-poll.test.ts

+23
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,26 @@ test('custom matcher works correctly', async () => {
8383
expect(fn).toHaveBeenCalledTimes(3)
8484
expect(fn).toHaveBeenCalledWith({ poll: true })
8585
})
86+
87+
test('toBeDefined', async () => {
88+
await expect.poll(() => 1).toBeDefined()
89+
await expect.poll(() => undefined).not.toBeDefined()
90+
91+
await expect(() =>
92+
expect.poll(() => 1, { timeout: 100, interval: 10 }).not.toBeDefined(),
93+
).rejects.toThrowError(expect.objectContaining({
94+
message: 'Matcher did not succeed in 100ms',
95+
cause: expect.objectContaining({
96+
message: 'expected 1 to be undefined',
97+
}),
98+
}))
99+
100+
await expect(() =>
101+
expect.poll(() => undefined, { timeout: 100, interval: 10 }).toBeDefined(),
102+
).rejects.toThrowError(expect.objectContaining({
103+
message: 'Matcher did not succeed in 100ms',
104+
cause: expect.objectContaining({
105+
message: 'expected undefined to be defined',
106+
}),
107+
}))
108+
})

0 commit comments

Comments
 (0)
Please sign in to comment.