Jest-JSDOM Передать HTML в конструктор JSDOM в Jest при создании экземпляра JSDOM

Есть ли способ передать HTML конструктору в шутке, встроенной в JSDOM, например

const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>'); - in orginal JSDOM 

Я посмотрел Jest configure API, есть два testEnvironment [string] и testEnvironmentOptions для JSDOM, но, похоже, они не могут удовлетворить мои требования.

Может кто подскажет как решить эту проблему


person HungryBird    schedule 17.04.2019    source источник


Ответы (1)


Создается экземпляр JSDOM: >здесь только с '<!DOCTYPE html>'.

Таким образом, инициализация JSDOM с помощью пользовательского HTML на самом деле невозможна со встроенным экземпляром JSDOM, созданным в jest-environment-jsdom.


Однако вы можете установить document.body на все, что хотите:

test('change document body', () => {
  document.body.innerHTML = '<p>Hello world</p>';
  expect(document.body.innerHTML).toBe('<p>Hello world</p>');  // Success!
});

... и вы всегда можете запустить в среде node и создать свой собственный экземпляр JSDOM:

/**
 * @jest-environment node
 */
const { JSDOM } = require("jsdom");
const { window } = new JSDOM('<!DOCTYPE html><p>Hello world</p>');
const { document } = window;

test('initialize JSDOM with custom HTML', () => {
  expect(document.body.innerHTML).toBe('<p>Hello world</p>');  // Success!
});
person Brian Adams    schedule 23.04.2019