Jest- JSDOM实例化JSDOM时,将HTML传递给Jest中的JSDOM构造函数

时间:2019-04-17 14:40:42

标签: javascript unit-testing jestjs jsdom

是否有一种方法可以将HTML传递给Jest内置JSDOM中的构造函数,例如

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

我查看了Jest configure API,对于JSDOM,有两个 testEnvironment [string] testEnvironmentOptions ,但看来它们不能满足我的需求。

谁能告诉我如何解决这个问题

1 个答案:

答案 0 :(得分:1)

仅使用JSDOM创建here'<!DOCTYPE html>'实例。

因此,在JSDOM中创建的内置jest-environment-jsdom实例实际上不可能使用自定义HTML初始化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!
});