reactjs - 如何用 enzyme 的mount方法测试React组件

标签 reactjs testing jestjs enzyme

我正在尝试使用 enzyme 库的 mount 方法来呈现自定义组件,但它因错误而失败

Invariant Violation: Tester.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.

连同一些烦人的堆栈跟踪。

这是代码片段

import React from 'react'
import {shallow, mount, render} from 'enzyme'


describe('Dashboard', () => {
    let testComp;
    beforeEach(()=>{
        testComp = mount(  <UserDashboard />  )
    });

    it('should render self without breaking.', () => {
        expect(testComp).not.toBe(null)
    })

})

但我注意到问题不在于 UserDashboard 组件,因为当我用一个简单的 div 元素替换它时,我仍然遇到同样的错误。

testComp = mount(  <div />  )

shallowrender 方法工作得很好,但是 mount 方法真的很顽固。

拜托,我是测试 React 组件的新手,非常感谢任何关于为什么会发生这种情况的帮助。

最佳答案

这实际上是我的 react 版本 (react v15.6.2) 和我使用的 enzyme 适配器 (enzyme-adapter-react-16) 之间的兼容性问题。它通常应该是 enzyme-adapter-react-15

对于遇到同样问题的任何人,请务必访问 this link关于如何在您的 React 版本中配置和使用 enzyme 。感谢@nubinub 提供链接

关于reactjs - 如何用 enzyme 的mount方法测试React组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54073939/

相关文章:

Reactjs 每次在 setState 上刷新页面

javascript - 使用中继js向前和向后分页

python - 如何在python中的时间序列之间有效地映射数据

testing - 使用函数式语言实现 UI 自动化

java - 在 Java 中测试 try-catch block

javascript - 如何覆盖 redux reducer 中的默认状态参数?

javascript - 捆绑失败意外的 token native react

node.js - cd 到 package.json 中的正确文件夹

unit-testing - 引用错误 : __DEV__ is not defined when trying to test AsyncStorage

javascript - 在setTimeout中解析promise会出现超时错误