diff --git a/CHANGELOG.md b/CHANGELOG.md index 2271ce48f605..db8c1abde6d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Fixes +- `[expect]` Fix TypeError in `toBeInstanceOf` on `null` or `undefined` ([#6912](https://github.com/facebook/jest/pull/6912)) - `[jest-jasmine2]` Throw a descriptive error if the first argument supplied to a hook was not a function ([#6917](https://github.com/facebook/jest/pull/6917)) - `[jest-circus]` Throw a descriptive error if the first argument supplied to a hook was not a function ([#6917](https://github.com/facebook/jest/pull/6917)) - `[expect]` Fix variadic custom asymmetric matchers ([#6898](https://github.com/facebook/jest/pull/6898)) diff --git a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap index ea01adb411dc..400e8b6e424d 100644 --- a/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap +++ b/packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap @@ -1078,6 +1078,14 @@ Received constructor: Number Received value: 1" `; +exports[`.toBeInstanceOf() failing null and [Function String] 1`] = ` +"expect(value).toBeInstanceOf(constructor) + +Expected constructor: String +Received constructor: +Received value: null" +`; + exports[`.toBeInstanceOf() failing true and [Function Boolean] 1`] = ` "expect(value).toBeInstanceOf(constructor) @@ -1086,6 +1094,14 @@ Received constructor: Boolean Received value: true" `; +exports[`.toBeInstanceOf() failing undefined and [Function String] 1`] = ` +"expect(value).toBeInstanceOf(constructor) + +Expected constructor: String +Received constructor: +Received value: undefined" +`; + exports[`.toBeInstanceOf() passing [] and [Function Array] 1`] = ` "expect(value).not.toBeInstanceOf(constructor) diff --git a/packages/expect/src/__tests__/matchers.test.js b/packages/expect/src/__tests__/matchers.test.js index 9c331c36e07e..36132f537bb1 100644 --- a/packages/expect/src/__tests__/matchers.test.js +++ b/packages/expect/src/__tests__/matchers.test.js @@ -500,6 +500,8 @@ describe('.toBeInstanceOf()', () => { [true, Boolean], [new A(), B], [Object.create(null), A], + [undefined, String], + [null, String], ].forEach(([a, b]) => { test(`failing ${stringify(a)} and ${stringify(b)}`, () => { expect(() => diff --git a/packages/expect/src/matchers.js b/packages/expect/src/matchers.js index 848e8f1de30f..0d8d235ab1b4 100644 --- a/packages/expect/src/matchers.js +++ b/packages/expect/src/matchers.js @@ -183,7 +183,9 @@ const matchers: MatchersObject = { constructor.name || String(constructor), )}\n` + `Received constructor: ${RECEIVED_COLOR( - received.constructor && received.constructor.name, + received != null + ? received.constructor && received.constructor.name + : '', )}\n` + `Received value: ${printReceived(received)}`;