Jest - 测试 html<详细信息>带有错误的标记:未捕获类型错误:无法读取属性“body”;为空

发布于 2025-01-14 06:54:47 字数 6301 浏览 3 评论 0原文

我尝试用 jest、jsdom、enzyme 测试我的简单细节反应组件,但没有成功。如果我想将详细信息组件的属性“open”设置为 true,那么笑话将出现 Uncaught [TypeError: Cannot read property 'body' of null] 错误。

以下是我的代码的简单版本


import { mount } from 'enzyme'
import React from 'react'

describe("Expander", () => {
  it("should render details in open status", () => {
    const wrapper = mount(
      <details
        open={true}
      >
        <summary>Categorry</summary>
        This is content for Category
      </details>
    )
  })
})

整个错误回溯如下所示



Ran all test suites matching /__tests__\/components\/product\/Expander.js/i.
  console.error
    Error: Uncaught [TypeError: Cannot read property 'body' of null]
        at reportException (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:24)
        at innerInvokeEventListeners (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:341:9)
        at invokeEventListeners (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
        at HTMLDetailsElementImpl._dispatch (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:205:9)
        at fireAnEvent (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/helpers/events.js:18:36)
        at HTMLDetailsElementImpl._dispatchToggleEvent (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js:17:5)
        at listOnTimeout (internal/timers.js:557:17)
        at processTimers (internal/timers.js:500:7) TypeError: Cannot read property 'body' of null
        at getActiveElement (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:1449:16)
        at getActiveElementDeep (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:7767:17)
        at getSelectionInformation (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:7800:21)
        at prepareForCommit (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:10163:26)
        at commitRootImpl (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:23085:29)
        at unstable_runWithPriority (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/node_modules/scheduler/cjs/scheduler.development.js:468:12)
        at runWithPriority$1 (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11276:10)
        at commitRoot (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:22990:3)
        at performSyncWorkOnRoot (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:22329:3)
        at /Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11327:26
        at unstable_runWithPriority (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/node_modules/scheduler/cjs/scheduler.development.js:468:12)
        at runWithPriority$1 (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11276:10)
        at flushSyncCallbackQueueImpl (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11322:9)
        at flushSyncCallbackQueue (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11309:3)
        at batchedEventUpdates$1 (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:22403:7)
        at batchedEventUpdates (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:3745:12)
        at dispatchEventForPluginEventSystem (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:8507:3)
        at attemptToDispatchEvent (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:6005:3)
        at dispatchEvent (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:5924:19)
        at unstable_runWithPriority (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/node_modules/scheduler/cjs/scheduler.development.js:468:12)
        at dispatchUserBlockingUpdate (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:5894:5)
        at HTMLDivElement.callTheUserObjectsOperation (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30)
        at innerInvokeEventListeners (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:338:25)
        at invokeEventListeners (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
        at HTMLDetailsElementImpl._dispatch (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:205:9)
        at fireAnEvent (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/helpers/events.js:18:36)
        at HTMLDetailsElementImpl._dispatchToggleEvent (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js:17:5)
        at listOnTimeout (internal/timers.js:557:17)
        at processTimers (internal/timers.js:500:7)

      at VirtualConsole.<anonymous> (node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)
      at reportException (node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:70:28)
      at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:341:9)
      at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
      at HTMLDetailsElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:205:9)
      at fireAnEvent (node_modules/jsdom/lib/jsdom/living/helpers/events.js:18:36)

任何人都可以给我建议如何解决它或建议导致此类问题的原因吗?我将非常感谢任何相关信息。

谢谢。

I have tried to test my simple detail react component with jest, jsdom, enzyme without success. If I want to set attribute "open" of my detail component to true, then the jest will run in to Uncaught [TypeError: Cannot read property 'body' of null] error.

Following is simple version of my code


import { mount } from 'enzyme'
import React from 'react'

describe("Expander", () => {
  it("should render details in open status", () => {
    const wrapper = mount(
      <details
        open={true}
      >
        <summary>Categorry</summary>
        This is content for Category
      </details>
    )
  })
})

The whole error traceback is like following



Ran all test suites matching /__tests__\/components\/product\/Expander.js/i.
  console.error
    Error: Uncaught [TypeError: Cannot read property 'body' of null]
        at reportException (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:24)
        at innerInvokeEventListeners (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:341:9)
        at invokeEventListeners (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
        at HTMLDetailsElementImpl._dispatch (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:205:9)
        at fireAnEvent (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/helpers/events.js:18:36)
        at HTMLDetailsElementImpl._dispatchToggleEvent (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js:17:5)
        at listOnTimeout (internal/timers.js:557:17)
        at processTimers (internal/timers.js:500:7) TypeError: Cannot read property 'body' of null
        at getActiveElement (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:1449:16)
        at getActiveElementDeep (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:7767:17)
        at getSelectionInformation (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:7800:21)
        at prepareForCommit (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:10163:26)
        at commitRootImpl (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:23085:29)
        at unstable_runWithPriority (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/node_modules/scheduler/cjs/scheduler.development.js:468:12)
        at runWithPriority$1 (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11276:10)
        at commitRoot (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:22990:3)
        at performSyncWorkOnRoot (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:22329:3)
        at /Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11327:26
        at unstable_runWithPriority (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/node_modules/scheduler/cjs/scheduler.development.js:468:12)
        at runWithPriority$1 (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11276:10)
        at flushSyncCallbackQueueImpl (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11322:9)
        at flushSyncCallbackQueue (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:11309:3)
        at batchedEventUpdates$1 (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:22403:7)
        at batchedEventUpdates (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:3745:12)
        at dispatchEventForPluginEventSystem (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:8507:3)
        at attemptToDispatchEvent (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:6005:3)
        at dispatchEvent (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:5924:19)
        at unstable_runWithPriority (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/node_modules/scheduler/cjs/scheduler.development.js:468:12)
        at dispatchUserBlockingUpdate (/Users/htseng/Documents/code/store_fe/node_modules/react-dom/cjs/react-dom.development.js:5894:5)
        at HTMLDivElement.callTheUserObjectsOperation (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30)
        at innerInvokeEventListeners (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:338:25)
        at invokeEventListeners (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
        at HTMLDetailsElementImpl._dispatch (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:205:9)
        at fireAnEvent (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/helpers/events.js:18:36)
        at HTMLDetailsElementImpl._dispatchToggleEvent (/Users/htseng/Documents/code/store_fe/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js:17:5)
        at listOnTimeout (internal/timers.js:557:17)
        at processTimers (internal/timers.js:500:7)

      at VirtualConsole.<anonymous> (node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)
      at reportException (node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:70:28)
      at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:341:9)
      at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:274:3)
      at HTMLDetailsElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:205:9)
      at fireAnEvent (node_modules/jsdom/lib/jsdom/living/helpers/events.js:18:36)

Can anyone give me advice how to solve it or suggest the reason that cause such problem? I would deeply appreciate any related information.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文