From cd23c45e920449aa834e76450d9e33a1bb37c79f Mon Sep 17 00:00:00 2001 From: ninevra Date: Wed, 1 Jul 2020 20:06:04 -0700 Subject: [PATCH] fix: fix any() for symbols, bigints, null (#10179) --- CHANGELOG.md | 2 ++ .../expect/src/__tests__/asymmetricMatchers.test.ts | 4 ++++ packages/expect/src/asymmetricMatchers.ts | 11 ++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37cecfbc8229..4b0673350512 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixes +- `[expect]` Match symbols and bigints in `any()`; stop matching `null` ([#10223](https://github.com/facebook/jest/pull/10223)) + ### Chore & Maintenance ### Performance diff --git a/packages/expect/src/__tests__/asymmetricMatchers.test.ts b/packages/expect/src/__tests__/asymmetricMatchers.test.ts index b45e4c23d0b4..7e8b29e11939 100644 --- a/packages/expect/src/__tests__/asymmetricMatchers.test.ts +++ b/packages/expect/src/__tests__/asymmetricMatchers.test.ts @@ -29,7 +29,11 @@ test('Any.asymmetricMatch()', () => { any(Number).asymmetricMatch(1), any(Function).asymmetricMatch(() => {}), any(Boolean).asymmetricMatch(true), + /* global BigInt */ + any(BigInt).asymmetricMatch(1n), + any(Symbol).asymmetricMatch(Symbol()), any(Object).asymmetricMatch({}), + !any(Object).asymmetricMatch(null), any(Array).asymmetricMatch([]), any(Thing).asymmetricMatch(new Thing()), ].forEach(test => { diff --git a/packages/expect/src/asymmetricMatchers.ts b/packages/expect/src/asymmetricMatchers.ts index fa7293e0eaaa..196493db455f 100644 --- a/packages/expect/src/asymmetricMatchers.ts +++ b/packages/expect/src/asymmetricMatchers.ts @@ -46,13 +46,22 @@ class Any extends AsymmetricMatcher { } if (this.sample == Object) { - return typeof other == 'object'; + return typeof other == 'object' && other !== null; } if (this.sample == Boolean) { return typeof other == 'boolean'; } + /* global BigInt */ + if (this.sample == BigInt) { + return typeof other == 'bigint'; + } + + if (this.sample == Symbol) { + return typeof other == 'symbol'; + } + return other instanceof this.sample; }