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.

Relaterte artikler