From 0ced06479e21134f29ea37b69fae922bd0e7b07a Mon Sep 17 00:00:00 2001 From: Dunqing Date: Fri, 18 Aug 2023 13:13:46 +0800 Subject: [PATCH 1/5] fix(expect): improve the error message when nothing is thrown when using `toThrow` --- packages/expect/src/jest-expect.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/expect/src/jest-expect.ts b/packages/expect/src/jest-expect.ts index 74650f16b375..716275ee6590 100644 --- a/packages/expect/src/jest-expect.ts +++ b/packages/expect/src/jest-expect.ts @@ -499,7 +499,6 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { const promise = utils.flag(this, 'promise') const isNot = utils.flag(this, 'negate') as boolean let thrown: any = null - if (promise === 'rejects') { thrown = obj } @@ -519,12 +518,22 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { } } else { + let isThrow = false try { obj() } catch (err) { + isThrow = true thrown = err } + + if (!isThrow && !isNot) { + const message = utils.flag(this, 'message') || 'expected function to throw an error, but it didn`t' + const error = { + showDiff: false, + } + throw new AssertionError(message, error, utils.flag(this, 'ssfi')) + } } if (typeof expected === 'function') { From 31b79b68e688c430dc8d27f14bb23410563d34ab Mon Sep 17 00:00:00 2001 From: Dunqing Date: Fri, 18 Aug 2023 13:17:11 +0800 Subject: [PATCH 2/5] fix: revert --- packages/expect/src/jest-expect.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/expect/src/jest-expect.ts b/packages/expect/src/jest-expect.ts index 716275ee6590..d567c3e5f453 100644 --- a/packages/expect/src/jest-expect.ts +++ b/packages/expect/src/jest-expect.ts @@ -499,6 +499,7 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { const promise = utils.flag(this, 'promise') const isNot = utils.flag(this, 'negate') as boolean let thrown: any = null + if (promise === 'rejects') { thrown = obj } From 661e057780c8b0acc76eba189725d4818edfa8e5 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Fri, 18 Aug 2023 15:11:03 +0800 Subject: [PATCH 3/5] test: add case --- test/core/test/jest-expect.test.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/core/test/jest-expect.test.ts b/test/core/test/jest-expect.test.ts index 02be6726a834..a7f03f555e5c 100644 --- a/test/core/test/jest-expect.test.ts +++ b/test/core/test/jest-expect.test.ts @@ -332,6 +332,13 @@ describe('jest-expect', () => { expect(null).toBe(true) }) + it.fails('toThrow should failure when does not throw ', () => { + expect(() => { + }).toThrow(Error) + expect(async () => { + }).toThrow(Error) + }) + // https://jestjs.io/docs/expect#tostrictequalvalue class LaCroix { From 3a9d872427a5ebfb5a1e877964f5235f6ced7eb8 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Thu, 24 Aug 2023 00:15:24 +0800 Subject: [PATCH 4/5] feat: update --- packages/expect/src/jest-expect.ts | 2 +- test/core/test/jest-expect.test.ts | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/expect/src/jest-expect.ts b/packages/expect/src/jest-expect.ts index d567c3e5f453..5d7436e9a8c8 100644 --- a/packages/expect/src/jest-expect.ts +++ b/packages/expect/src/jest-expect.ts @@ -529,7 +529,7 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { } if (!isThrow && !isNot) { - const message = utils.flag(this, 'message') || 'expected function to throw an error, but it didn`t' + const message = utils.flag(this, 'message') || 'expected function to throw an error, but it didn\'t' const error = { showDiff: false, } diff --git a/test/core/test/jest-expect.test.ts b/test/core/test/jest-expect.test.ts index a7f03f555e5c..8c04ced1e843 100644 --- a/test/core/test/jest-expect.test.ts +++ b/test/core/test/jest-expect.test.ts @@ -332,13 +332,6 @@ describe('jest-expect', () => { expect(null).toBe(true) }) - it.fails('toThrow should failure when does not throw ', () => { - expect(() => { - }).toThrow(Error) - expect(async () => { - }).toThrow(Error) - }) - // https://jestjs.io/docs/expect#tostrictequalvalue class LaCroix { @@ -375,6 +368,18 @@ describe('jest-expect', () => { }, ]) }) + + it('toThrow didn\'t throw', () => { + expect(() => { + expect(async () => { + }).toThrow(Error) + }).toThrowErrorMatchingInlineSnapshot('"expected function to throw an error, but it didn\'t"') + + expect(() => { + expect(() => { + }).toThrow(Error) + }).toThrowErrorMatchingInlineSnapshot('"expected function to throw an error, but it didn\'t"') + }) }) describe('.toStrictEqual()', () => { From 77128ccaced3976fe403274dd781de8adfe888a7 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Fri, 25 Aug 2023 20:58:38 +0800 Subject: [PATCH 5/5] feat: separate test --- test/core/test/jest-expect.test.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/test/core/test/jest-expect.test.ts b/test/core/test/jest-expect.test.ts index 8c04ced1e843..23cfd8c28857 100644 --- a/test/core/test/jest-expect.test.ts +++ b/test/core/test/jest-expect.test.ts @@ -369,16 +369,20 @@ describe('jest-expect', () => { ]) }) - it('toThrow didn\'t throw', () => { - expect(() => { - expect(async () => { - }).toThrow(Error) - }).toThrowErrorMatchingInlineSnapshot('"expected function to throw an error, but it didn\'t"') + describe('toThrow', () => { + it('error wasn\'t thrown', () => { + expect(() => { + expect(() => { + }).toThrow(Error) + }).toThrowErrorMatchingInlineSnapshot('"expected function to throw an error, but it didn\'t"') + }) - expect(() => { + it('async wasn\'t awaited', () => { expect(() => { - }).toThrow(Error) - }).toThrowErrorMatchingInlineSnapshot('"expected function to throw an error, but it didn\'t"') + expect(async () => { + }).toThrow(Error) + }).toThrowErrorMatchingInlineSnapshot('"expected function to throw an error, but it didn\'t"') + }) }) })