From 674851ca341de0a1a9e5650b28be32d6cf28e428 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Tue, 2 Apr 2024 16:50:36 +0800 Subject: [PATCH] fix: the value received by toMatch should be a string (#5428) --- packages/expect/src/jest-expect.ts | 3 +++ test/core/test/jest-expect.test.ts | 2 ++ 2 files changed, 5 insertions(+) diff --git a/packages/expect/src/jest-expect.ts b/packages/expect/src/jest-expect.ts index 7816f839299f..c20ade34e381 100644 --- a/packages/expect/src/jest-expect.ts +++ b/packages/expect/src/jest-expect.ts @@ -171,6 +171,9 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { }) def('toMatch', function (expected: string | RegExp) { const actual = this._obj as string + if (typeof actual !== 'string') + throw new TypeError(`.toMatch() expects to receive a string, but got ${typeof actual}`) + return this.assert( typeof expected === 'string' ? actual.includes(expected) diff --git a/test/core/test/jest-expect.test.ts b/test/core/test/jest-expect.test.ts index 4648f0ab3be9..a637793803be 100644 --- a/test/core/test/jest-expect.test.ts +++ b/test/core/test/jest-expect.test.ts @@ -109,6 +109,8 @@ describe('jest-expect', () => { expect(0.2 + 0.1).not.toBe(0.3) expect(0.2 + 0.1).toBeCloseTo(0.3, 5) expect(0.2 + 0.1).not.toBeCloseTo(0.3, 100) // expect.closeTo will fail in chai + + expect(() => expect(1).toMatch(/\d/)).toThrowErrorMatchingInlineSnapshot(`[TypeError: .toMatch() expects to receive a string, but got number]`) }) it('asymmetric matchers (jest style)', () => {