javascript - Jest/Enzyme/JSDOM document.body.createTextRange er ikke en funksjon


Jeg prøver å teste en React-komponent, og det ser ut til at jeg støter på et JSDOM-problem.

Når jeg monterer komponenten min;

const component = mount(
   <PipelineActions pipelineActions={value} {...actions} />
);

Jeg får en feil kastet;

document.body.createTextRange er ikke en funksjon

Jeg prøvde å sette dommen direkte via;

(global as any).document = jsdom.jsdom('');
(global as any).window = document.defaultView;

som ikke hadde noen effekt. Når jeg prøver å console.log(document.body) får jeg også noe merkelig;

HTMLBodyElement {}

Det ser ut som DOM-en ikke bygges riktig, men jeg er ikke sikker på hvorfor. Har noen sett dette før?

Svar #1

Du kan sette og simulere ting på global-objektet:

global.body = {createTextRange: jest.fn()}

Relaterte artikler