您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~
问题描述
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;
错误解决,顺利进行测试。