typescript - Hvordan fikse TypeError: jest.replaceProperty er ikke en funksjon når man mocker en const


Jeg har en fil med const-verdier, og jeg vil mocke en av disse egenskapene for å endre verdien dens.

const constsMock = jest.mock('./consts', jest.fn().mockReturnValue({ myConst: true }));

jest.spyOn(constsMock, 'myConst');

Jeg prøvde det ovenstående og fikk følgende feil:

Kan ikke spionere på myConst-egenskapen fordi den ikke er en funksjon; undefined gitt i stedet. Hvis du prøver å mocke en egenskap, bruk jest.replaceProperty(object, 'myConst', value) i stedet.

Gir mening. Så jeg prøvde:

import * as consts from './consts'
jest.replaceProperty( consts, 'myConst', true )

Som resulterte i:

TypeError: jest.replaceProperty er ikke en funksjon

Så jeg prøvde dette:

import { replaceProperty } from 'jest'

... som resulterer i en TypeScript-advarsel:

Modul '"jest"' har ingen eksportert medlem 'replaceProperty'.ts(2305)

Jeg forstår ikke hvorfor, fordi replaceProperty()-funksjonen er dokumentert i Jest-dokumentasjonen.

Kan noen hjelpe meg med å bruke denne funksjonen riktig for å mocke en konstant verdi?

Svar #1

for alle som snubler over det: https://jestjs.io/docs/jest-object

ser ut som om replaceProperty-funksjonen bare er tilgjengelig når jest importeres eksplisitt

// https://jestjs.io/docs/jest-object
INFO
The TypeScript examples from this page will only work as documented if you explicitly import Jest APIs:

import {expect, jest, test} from '@jest/globals';

Relaterte artikler