Что такое --env = jsdom

Я запускал свой набор тестов для своего приложения, поддерживающего реакцию, с помощью команды jest.

Тесты не пройдут в файле jest-runtime/build/index.js в строке

const wrapper = this._environment.runScript(transformedFile.script)[
(_script_transformer || _load_script_transformer()).default.EVAL_RESULT_VARIABLE];

с ошибкой:

TypeError: Cannot read property 'Object.<anonymous>' of null

Моя версия шутки - 21.2.1.

В любом случае, погуглив, я обнаружил, что кто-то работает jest --env=jsdom. Я попробовал, и тогда мой набор тестов начал работать.

Но что означает этот вариант?

Я знаю, что jsdom - это реализация стандартов DOM и HTML.

Но чем это полезно для шуток? Как это изменит поведение шутки, чтобы теперь тесты прошли?


person octavian    schedule 21.08.2018    source источник
comment
Вы где-нибудь переопределяете свойство testEnvironment? jestjs.io/docs/en/configuration#testenvironment-string. Это изменит используемую по умолчанию jsdom библиотеку. CLI имеет более высокий приоритет и переопределит значение и заставит его работать. Jsdom является обязательным, так как это безголовый браузер, используемый для тестирования компонентов.   -  person Jonathan Hamel    schedule 21.08.2018
comment
Если вы работаете в React, он обновляет виртуальный дом, а не реальный дом. Jest работает без реакции, я думаю, это просто дополнительная информация о том, откуда читать. Однако я не могу сказать это со стопроцентной уверенностью ..   -  person Xorifelse    schedule 21.08.2018


Ответы (1)


Поскольку jest является модулем узла и выполняется на вашем локальном компьютере (или в среде CI), а не в браузере, он выполняется в контексте узла. Это означает, что глобальные переменные, к которым вы можете получить доступ в контексте браузера, например window или document, недоступны. Поэтому, если вы обращаетесь к этим глобальным объектам внутри своего кода (или к любой другой специфической функции браузера, такой как localStorage, например), ваши тесты будут терпеть неудачу. Параметр --env=jsdom гарантирует, что для ваших тестов и таким образом позволяет им пройти.

person smonusbonus    schedule 28.12.2018