Вы можете настроить testenvironment конфигурацию файла jest.config.js
. Так что вам не нужно явно использовать jsdom
в вашем тестовом файле.
Например,
index.js
:
export function $isNodeList(input) {
return NodeList.prototype.isPrototypeOf(input);
}
index.test.js
:
import * as mod from '.';
describe('59947808', () => {
test('expect nodeList to be nodelist', () => {
let nodeList = document.querySelectorAll('div');
console.log('nodeList: ', nodeList);
expect(mod.$isNodeList(nodeList)).toBe(true);
});
test('expect htmlCollection not to be nodelist', () => {
let htmlCollection = document.getElementsByTagName('div');
console.log('htmlCollection: ', htmlCollection);
expect(mod.$isNodeList(htmlCollection)).toBe(false);
});
});
Результаты модульных испытаний:
PASS src/stackoverflow/59947808/index.test.js (8.528s)
59947808
✓ expect nodeList to be nodelist (11ms)
✓ expect htmlCollection not to be nodelist (1ms)
console.log src/stackoverflow/59947808/index.test.js:6
nodeList: NodeList {}
console.log src/stackoverflow/59947808/index.test.js:12
htmlCollection: HTMLCollection {}
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 9.773s
jest.config.js
:
module.exports = {
preset: 'ts-jest/presets/js-with-ts',
testEnvironment: 'jsdom',
};
Исходный код: https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/59947808