marchaos / jest-mock-extended

Type safe mocking extensions for Jest https://www.npmjs.com/package/jest-mock-extended
MIT License
810 stars 56 forks source link

Doesn't work if injectGlobals is false #116

Open dhardtke opened 1 year ago

dhardtke commented 1 year ago

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.

skovhus commented 1 year ago

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.

leighman commented 1 week ago

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