javascript - Jest 测试中的 Preact Compat 不兼容性

标签 javascript reactjs jestjs preact

我正在使用 preact 8.4.2 并且也有 preact-compat。

我正在使用 linkifyjs/react 来呈现文本中的链接。这在开发中工作正常,但在尝试导入依赖于 React 的“linkifyjs/react”库时我的测试失败并出现此错误:

  ● Test suite failed to run

    TypeError: Cannot redefine property: type
        at Function.defineProperty (<anonymous>)

      1 | import {h, Component, createRef} from 'preact';
    > 2 | import Linkify from 'linkifyjs/react';
        | ^

我真的不确定这个错误是什么意思,我很困惑,因为 preact-compat 应该允许使用具有 React 依赖项的库。堆栈跟踪指向 preact-compat/src/index.js:60 其中有:

Object.defineProperty(VNode.prototype, 'type', {
    get() {
        return this.nodeName;
    },
    set(v) {
        this.nodeName = v;
    },
    configurable: true
});

最佳答案

我遇到了同样的问题。对我造成问题的是 preact-compatenzyme-adapter-preact-pure我们试图让 Preact vNode 看起来像 React 元素。

https://github.com/preactjs/enzyme-adapter-preact-pure/pull/62

此拉取请求 enzyme-adapter-preact-pure已经为我解决了这些问题。因此,对于 enzyme-adapter-preact-pure@^2.0.1,一切正常。

关于javascript - Jest 测试中的 Preact Compat 不兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974998/

相关文章:

javascript - 我如何将键值对添加到javascript中的关联数组

javascript - 宽度减小时调整 React 导航栏组件的大小?

javascript - 无法读取未定义的属性 'use_env_variable'

javascript - 页面加载时显示 D3 工具提示

javascript - jQuery 检测空白区域

javascript - Rails - 样式表要求 - 为每个页面选择特定的样式表

javascript - 为什么我在我的页面中看不到不同的 li 标记?

javascript - React 中的无限渲染

javascript - 如何使用 Jest 模拟直接导入的函数?

typescript - 使用 jest 模拟 AWS.DynamoDB.DocumentClient 的构造函数