jest-mock-extended icon indicating copy to clipboard operation
jest-mock-extended copied to clipboard

Doesn't work if injectGlobals is false

Open dhardtke opened this issue 1 year ago • 1 comments

In our project we do not want to enable injection of globals such as test, describe, etc.

See https://jestjs.io/docs/cli#--injectglobals

If injectGlobals is set to false, jest-mock-extended doesn't work:

jest is not defined
ReferenceError: jest is not defined
    at calledWithFn (<userdir>\node_modules\jest-mock-extended\lib\CalledWithFn.js:25:16)
    at Object.get (<userdir>\node_modules\jest-mock-extended\lib\Mock.js:90:45)
    at mockReset (<userdir>\backend\node_modules\jest-mock-extended\lib\Mock.js:42:17)

The issue is that jest-mock-extended is relying on the global "jest" object to exist.

I tried explicitly adding

import { jest } from '@jest/globals';

but jest-mock-extended uses types from @types/jest which provides different definitions than the ones returned by @jest/globals.

dhardtke avatar Apr 24 '23 12:04 dhardtke

It makes a lot of sense for this library to move from @types/jest to @jest/globals + make @jest/globals a peer dependency.

The only challenge seems to be the jest.Mock type that changed interface, so this one requires some library changes.

skovhus avatar May 15 '23 07:05 skovhus

Any reason the fix PR can't be merged? Also affects running with eg. bun

leighman avatar Jul 05 '24 12:07 leighman