Набрав этот вопрос, я понял его.
Когда система тестирования была настроена, при инициализации JSDom я также установил глобальный afterEach()
для сброса содержимого DOM после каждого теста. , Это напрямую не создавало проблему, но это означало, что порядок инициализации обязательно был таким:
- Реакция
- Мокко
- JSDom
Поэтому, когда React был инициализирован, он оглянулся и не увидел работающего DOM, и подумал: «Черт, я должен работать на IE или что-то в этом роде». После этого все было вниз.
Так что я уверенно реструктурировал это так:
- JSDom
- Реакция
- Мокко
И это ... ничего не делало.
Тогда я понял, что проблема заключалась в том, что я делал это:
import { JSDOM } from "jsdom";
import Enzyme from "enzyme";
import Adapter from "enzyme-adapter-react-16";
global.jsdom = initDom();
...
React фактически инициализировал себя, когда был импортировано - путем импорта Enzyme!
Так что я уверенно переписал это так:
import { JSDOM } from "jsdom";
global.jsdom = initDom();
import Enzyme from "enzyme";
import Adapter from "enzyme-adapter-react-16";
И , что ... ничего не сделал.
Потому что оператор import
эффективно поднимается в начало файла.
Так что я уверенно переписал это так:
import { JSDOM } from "jsdom";
let jsdom = new JSDOM("");
...
const Enzyme = require("enzyme");
const Adapter = require("enzyme-adapter-react-16");
И это ... исправил.