在下一个js中Mount无法在酶中工作

问题描述

我正在用下一个js(带有打字稿和样式化组件)编写一个Web应用程序。我开始编写测试,使用mount时发生错误崩溃

TypeError: Cannot read property 'child' of undefined

但是,如果我使用浅表,则一切正常。我需要使用mount来渲染组件中的所有元素,因为如果我使用浅的样式化组件的组件,则不会渲染,并且我无法在其上模拟事件。我不明白问题是什么

SmartText.test.tsx:

import React from 'react'
import { mount,ReactWrapper } from 'enzyme'
import {SmartText} from '../components/UI/SmartText'

describe('Render UI',() => { 
let component: ReactWrapper
beforeEach(() => {
    component = mount(<SmartText/>)
})
describe('SmartText',() => {
    test('Snapshot',() => {
        expect(component).toMatchSnapshot()
    })
    test('Input text',() => {
        component.find('input').simulate('change',{
            target:{
                value: 'some'
            }
        })
        expect(component.find('input').prop('value')).toEqual('some')
    })
})
})

Package.json

      {
      "name": "task-manager","version": "0.1.0","private": true,"scripts": {
        "dev": "next dev","build": "next b

uild","start": "next start","storybook": "start-storybook -p 6006","build-storybook": "build-storybook","test": "jest ","test:watch": "jest --watch","test:coverage": "jest --coverage","prettier": "prettier --check ./"
  },"dependencies": {
    "enzyme-adapter-react-16.3": "^1.7.3","next": "9.5.5","react": "17.0.1","react-dom": "17.0.1"
  },"devDependencies": {
    "@babel/core": "^7.12.3","@babel/plugin-transform-runtime": "^7.12.1","@babel/preset-env": "^7.12.1","@babel/preset-flow": "^7.12.1","@babel/preset-react": "^7.12.1","@storybook/addon-actions": "^6.0.27","@storybook/addon-essentials": "^6.0.27","@storybook/addon-links": "^6.0.27","@storybook/react": "^6.0.27","@types/enzyme": "^3.10.7","@types/enzyme-adapter-react-16": "^1.0.6","@types/jest": "^26.0.15","@types/node": "^14.14.2","@types/react": "^16.9.53","@types/styled-components": "^5.1.4","babel-jest": "^26.6.1","babel-loader": "^8.1.0","babel-plugin-transform-es2015-modules-commonjs": "^6.26.2","enzyme": "^3.11.0","enzyme-adapter-react-16": "^1.15.5","enzyme-to-json": "^3.6.1","jest": "^26.6.1","jest-styled-components": "^7.0.3","prettier": "^2.1.2","react-is": "^17.0.1","react-test-renderer": "^17.0.1","sb": "^6.0.27","styled-components": "^5.2.0","ts-jest": "^26.4.1","typescript": "^4.0.3"
  },"resolutions": {
    "styled-components": "^5"
  }
}

解决方法

之所以会发生此问题,是因为与您的react版本(版本17不兼容)相比,blast()版本。

您可以降级以响应16,也可以使用此处所述的临时解决方案来升级enyzme适配器:https://github.com/wojtekmaj/enzyme-adapter-react-17

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...