[Bugfix]it looks like you called `mount()` without a global document being loade

779 阅读1分钟

您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~

问题描述

jest测试react组件时尝试获取mount组件报错,并无法进行测试。

解决方案

这个bug的原因是在enzyme中存在多种模拟组件render的形式,相对于render函数这种模拟的形式,mount需要实际的dom环境来做挂载,也就是说mount是一种更接近真实的挂载行为。因此我们在测试之前就需要为其配置全局的document和window变量来模拟实际的浏览器行为。

操作如下:

yarn add -D jsdom

配置jest测试文件:

import { render, mount } from 'enzyme';
const jsdom =  require('jsdom');

const { JSDOM } = jsdom;
const { window } = new JSDOM('');
const { document } = (new JSDOM(``)).window;

global.document = document;
global.window = window;

错误解决,顺利进行测试。