diff --git a/CHANGELOG.md b/CHANGELOG.md index 786c91a3a910..b6091eb2283a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixes +- `[pretty-format]` Print `BigInt` as a readable number instead of `{}` [#8138](https://github.com/facebook/jest/pull/8138) + ### Chore & Maintenance - `[*]` Remove flow from code base ([#8061](https://github.com/facebook/jest/pull/8061)) diff --git a/packages/pretty-format/src/__tests__/prettyFormat.test.ts b/packages/pretty-format/src/__tests__/prettyFormat.test.ts index bcfca99f7c3d..a9275ad50b49 100644 --- a/packages/pretty-format/src/__tests__/prettyFormat.test.ts +++ b/packages/pretty-format/src/__tests__/prettyFormat.test.ts @@ -224,6 +224,29 @@ describe('prettyFormat()', () => { expect(prettyFormat(val)).toEqual('-0'); }); + /* global BigInt */ + if (typeof BigInt === 'function') { + it('prints a positive bigint', () => { + const val = BigInt(123); + expect(prettyFormat(val)).toEqual('123n'); + }); + + it('prints a negative bigint', () => { + const val = BigInt(-123); + expect(prettyFormat(val)).toEqual('-123n'); + }); + + it('prints zero bigint', () => { + const val = BigInt(0); + expect(prettyFormat(val)).toEqual('0n'); + }); + + it('prints negative zero bigint', () => { + const val = BigInt(-0); + expect(prettyFormat(val)).toEqual('0n'); + }); + } + it('prints a date', () => { const val = new Date(10e11); expect(prettyFormat(val)).toEqual('2001-09-09T01:46:40.000Z'); diff --git a/packages/pretty-format/src/index.ts b/packages/pretty-format/src/index.ts index b4daddc17114..aafe7cfc08d4 100644 --- a/packages/pretty-format/src/index.ts +++ b/packages/pretty-format/src/index.ts @@ -72,6 +72,10 @@ function printNumber(val: number): string { return Object.is(val, -0) ? '-0' : String(val); } +function printBigInt(val: bigint): string { + return String(`${val}n`); +} + function printFunction(val: Function, printFunctionName: boolean): string { if (!printFunctionName) { return '[Function]'; @@ -112,6 +116,9 @@ function printBasicValue( if (typeOf === 'number') { return printNumber(val); } + if (typeOf === 'bigint') { + return printBigInt(val); + } if (typeOf === 'string') { if (escapeString) { return '"' + val.replace(/"|\\/g, '\\$&') + '"';