jest.mock fungerer ikke med Javascript-test og Typescript-modul
Min mockede utilFunction blir ikke brukt, og når jeg legger til logging i fabrikkfunksjonen, viser det at den aldri blir kalt. Jeg har allerede prøvd å søke etter jest.mock som ikke fungerer med relative stier og jest.mock som ikke blir kalt for Typescript, og tenkte at det kanskje kunne være relatert til blandingen av JS-tester og TS-kildekode eller til de forskjellige modulstiene som brukes i kilde- versus testkoden.
Kode som testes:
// src/foo/fooModule.ts
import { utilFunction } from '../util'
export const foo = () => {
return utilFunction()
}
Testkode:
// test/fooModule.test.js
const { foo } = require('../src/foo/fooModule')
jest.mock('../src/util', () => {
return { utilFunction: () => 'mocked' };
});
describe('fooModule tests', () => ...)
Svar #1
jest.mock-kallet må flyttes over importene:
// test/fooModule.test.js
jest.mock('../src/util', () => {
return { utilFunction: () => 'mocked' };
});
const { foo } = require('../src/foo/fooModule')
describe('fooModule tests', () => ...)
Min siste erfaring med å jobbe med Jest før dette var i et prosjekt hvor testene også ble skrevet i Typescript og babel-jest ble brukt. babel-jest inkluderer babel-jest-hoist som automatisk hever jest-mockene over alle imports, så jeg trengte ikke tidligere å bekymre meg for rekkefølgen.
