小编Jes*_*nan的帖子

jsdom:dispatchEvent/addEventListener似乎不起作用

摘要:

我试图测试一个侦听其中的本机DOM事件的React组件componentWillMount.

我发现jsdom(@8.4.0)在调度事件和添加事件监听器时没有按预期工作.

我可以提取的最简单的代码:

window.addEventListener('click', () => {
  throw new Error("success")
})

const event = new Event('click')
document.dispatchEvent(event)

throw new Error('failure')
Run Code Online (Sandbox Code Playgroud)

这引发了"失败".


语境:

如果上述问题存在XY问题,我想提供更多背景信息.

这是我试图测试的组件的提取/简化版本.你可以在Webpackbin上看到它.

import React from 'react'

export default class Example extends React.Component {
  constructor() {
    super()
    this._onDocumentClick = this._onDocumentClick.bind(this)
  }

  componentWillMount() {
    this.setState({ clicked: false })
    window.addEventListener('click', this._onDocumentClick)
  }

  _onDocumentClick() {
    const clicked = this.state.clicked || false
    this.setState({ clicked: !clicked })
  }


  render() {
    return <p>{JSON.stringify(this.state.clicked)}</p>
  }
} …
Run Code Online (Sandbox Code Playgroud)

javascript testing jsdom

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

javascript ×1

jsdom ×1

testing ×1