Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork6.6k
Closed
Labels
Description
Version
30.0.5
Steps to reproduce
- Clone fromhttps://github.com/joshkel/jest-globals-bug
npm inpm run tets
Expected behavior
Mocking../makeId.js fromsrc/unit/__tests__/makeId.test.js works, becausesrc/unit/makeId.ts exists.
Actual behavior
Error message:
FAIL src/unit/__tests__/makeId.test.js ● Test suite failed to run Cannot find module '../makeId.js' from 'src/setupTests.js' 2 | import { makeId } from '../makeId.js'; 3 | > 4 | jest.unstable_mockModule('../makeId.js', () => ({ | ^ 5 | makeId: jest.fn(() => 'aaaa'), 6 | })); 7 | at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/index.js:863:11) at unstable_mockModule (src/unit/__tests__/makeId.test.js:4:6)Additional context
This problem is caused if the@jest/globals module is referenced elsewhere (for example, in a setupTestsAfterEnv file) before it's imported in a test file. The first time@jest/globals is imported, it's synthesized with the path ofthat file that imported it and cached. All subsequent imports are then bound to the path of whatever first imported it and use that for path resolution, instead of properly resolving paths as relative to their own locations.
Environment
System: OS: macOS 15.5 CPU: (10) arm64 Apple M1 Pro Binaries: Node: 22.17.1 -~/.nvm/versions/node/v22.17.1/bin/node Yarn: 1.22.22 - /opt/homebrew/bin/yarn npm: 10.9.2 -~/.nvm/versions/node/v22.17.1/bin/npm pnpm: 10.13.1 -~/.nvm/versions/node/v22.17.1/bin/pnpm bun: 1.2.19 - /opt/homebrew/bin/bun npmPackages: jest: ^30 => 30.0.5