как использовать jsdom для тестирования функций с помощью «документа»

У меня небольшой вопрос. Я пытаюсь протестировать некоторые созданные мной функции (написанные на машинописном языке), и я использую mocha/chai/jsdom. Теперь я получаю сообщение об ошибке при тестировании функций с «документом» внутри документа. Я получаю сообщение «ReferenceError: документ не определен». Как я могу проверить эти функции с помощью «документа»?

Например:

[подсказка.спецификации]

import { expect } from 'chai'
import { JSDOM } from 'jsdom'
import { functionX } from './functions'

describe('Functions', () => {
  it('is possible to execute functionX with simple parameters', () => {
    const jsdom = new JSDOM()
    const htmlElement = jsdom.window.document.createElement('div')
    expect(functionX(htmlElement, function() { return true; } )).to.equal(true)
  })
})

[функции.ts]

export const functionX = (
    body:HTMLElement, callback: (ok: boolean) => void
) => {
    const doc = body.ownerDocument
    const parent = doc.body

    // ...

    let container = document.querySelector('.container') as HTMLDivElement  //  ReferenceError: document is not defined

}

person user1806756    schedule 25.07.2017    source источник
comment
Должно ли это быть doc.querySelector? Я вижу, где вы определили документ из тела, но я не вижу документа, определенного нигде, даже в глобальном масштабе.   -  person veratti    schedule 25.07.2017


Ответы (1)


Вы можете сделать документ JSDOM доступным для ваших тестов по всему миру, если подготовите его заранее.

import { JSDOM } from 'jsdom';
const { window } = new JSDOM('<!doctype html><html><body></body></html>');

// Save these two objects in the global space so that libraries/tests
// can hook into them, using the above doc definition.
global.document = window.document;
global.window = window;

Запишите это в отдельный файл и добавьте этот файл в качестве параметра для mocha прямо перед вашими файлами спецификаций. Что-то типа:

_mocha Specs/_setup.js Specs/*.js
person veratti    schedule 25.07.2017