Jest- JSDOM Передача HTML конструктору JSDOM в Jest при создании экземпляра JSDOM - PullRequest
2 голосов
/ 17 апреля 2019

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

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

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

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

1 Ответ

1 голос
/ 23 апреля 2019

Экземпляр 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!
});
...