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';
