relay
relay copied to clipboard
[relay-test-utils] createMockEnvironment expects jest to be defined
The package.json file of relay-test-utils does not require jest, but attempting to use createMockEnvironment in any test runner except for jest will result in the following error:
ReferenceError: jest is not defined
at mockDisposableMethod (node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js:40:17)
at Object.createMockEnvironment (node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js:354:5)
It looks like RelayModernMockEnvironment utilizes jest.fn under the hood to create mock methods on the Environment object.
This issue prevents users from using createMockEnvironment with test runners such as vitest, mocha, jasmine, ava, etc.
Reproduction using mocha: https://glitch.com/edit/#!/frost-tulip-polka
It looks like this could be an easy fix by adding a dependency on jest-mock and conditionally using it if the global jest instance isn't defined.
packages/relay-test-utils/RelayModernMockEnvironment.js
const jest = typeof jest === 'undefined' ? new require('jest-mock').ModuleMocker(global) : jest;
Would jest-mock need to be a peerDependency or a dependency?
- peerDependency
Forgive my ignorance here, just started using Relay myself with a Vite/Vitest app.
Is there a suggested workaround I can employ until this is fixed?
@Dmo16 for a workaround, in a setupFiles, i put:
import {vi} from 'vitest'
global.jest = vi
anybody got an example of using vitest with relay?
anybody willing to pursue a pull request to fix this ?