3.0.3: works fine with browser fetch, won't mock with node-fetch
jcollum opened this issue · 1 comments
Got 2 projects, one is a backend and the other frontend. I implemented jest-fetch-mock in the frontend first with no issues.
Now I'm implementing in the backend and it just won't actually mock fetch when the code I'm testing gets called.
Versions:
node-fetch: 2.6.1
jest: 27.1.0
node: 14.17.6
jest-fetch-mock: 3.0.3
jest.config.js:
automock: false,
resetMocks: false,
setupFiles: ["<rootDir>/.jest/setEnvVars.js", "<rootDir>/.jest/setupFetchMocking.js"]
.jest/setupFetchMocking.js: require('jest-fetch-mock').enableMocks()
http-io.test.js, first 2 lines:
import fetchMock, { enableFetchMocks } from "jest-fetch-mock";
enableFetchMocks()
Failing test:
test('with no theme or filter', async () => {
fetchMock.mockOnceIf(/.*dashboards-next.*/, () => {
return Promise.resolve({
status: 200,
access_token: 'access_token',
});
});
const response = await create_sso_embed_url(
First line of http-io.js, code under test: import fetch, { RequestInit } from 'node-fetch';
Now, when I debug and look at fetch
I see something odd:
- right after the import in http-io.js
fetch
is a mock - when the test actually calls the function in http-io.js
fetch
is not a mock
I gotta think this is something going on with node-fetch
<-> jest-fetch-mock
since this isn't happening in the other project that uses "browser" fetch
.
I changed the mocking out and used mock-service-worker instead. Works a lot better. The node-fetch and fetch and jest mocks were problematic.