Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何使用jest测试DOM事件_Reactjs_React Redux_Jestjs - Fatal编程技术网

Reactjs 如何使用jest测试DOM事件

Reactjs 如何使用jest测试DOM事件,reactjs,react-redux,jestjs,Reactjs,React Redux,Jestjs,这是我的组件功能 componentDidUpdate() { this.addPlantListener(); } addPlantListener = () => { if (this.plantListener === undefined) { const ddl = document.getElementById('ddlSourcePlant'); Iif (ddl !== undefined && ddl !== n

这是我的组件功能

componentDidUpdate() {
    this.addPlantListener();
  }
addPlantListener = () => {
    if (this.plantListener === undefined) {
      const ddl = document.getElementById('ddlSourcePlant');
      Iif (ddl !== undefined && ddl !== null) {
        this.plantListener = ddl;
        ddl.addEventListener('mouseleave', this.closePlantDropdown);
      }
    }
  }
closePlantDropdown = (dropdown) => {
    dropdown.fromElement.click();
  }
在方法内部调用的

componentDidUpdate() {
    this.addPlantListener();
  }
addPlantListener = () => {
    if (this.plantListener === undefined) {
      const ddl = document.getElementById('ddlSourcePlant');
      Iif (ddl !== undefined && ddl !== null) {
        this.plantListener = ddl;
        ddl.addEventListener('mouseleave', this.closePlantDropdown);
      }
    }
  }
closePlantDropdown = (dropdown) => {
    dropdown.fromElement.click();
  }
此处addEventListener再次从mouseleave事件调用

componentDidUpdate() {
    this.addPlantListener();
  }
addPlantListener = () => {
    if (this.plantListener === undefined) {
      const ddl = document.getElementById('ddlSourcePlant');
      Iif (ddl !== undefined && ddl !== null) {
        this.plantListener = ddl;
        ddl.addEventListener('mouseleave', this.closePlantDropdown);
      }
    }
  }
closePlantDropdown = (dropdown) => {
    dropdown.fromElement.click();
  }
我用它来测试这个笑话,这个函数在react js中 如何测试此功能,我无法测试addEvent侦听器和鼠标离开事件,任何人都可以建议一种实现此功能的方法。谢谢。:)

我的组件只是一个下拉列表

componentDidUpdate() {
    this.addPlantListener();
  }
addPlantListener = () => {
    if (this.plantListener === undefined) {
      const ddl = document.getElementById('ddlSourcePlant');
      Iif (ddl !== undefined && ddl !== null) {
        this.plantListener = ddl;
        ddl.addEventListener('mouseleave', this.closePlantDropdown);
      }
    }
  }
closePlantDropdown = (dropdown) => {
    dropdown.fromElement.click();
  }
目前我的测试方法是这样的

it('test method', () => {
        const component = mount(h(SetSource, { ...props }));
        component.instance().componentDidUpdate();
        const ddl = component.find('#ddlSourcePlant');
** what goes here to test next lines and methods **
      });

你目前的测试有什么问题?通常情况下,jest与jsdom一起提供,因此它不应该是一个问题。也许您只需要为测试启动document.body,否则它应该work@Axnyff我如何在一个测试中测试这个流,这里要断言的期望是什么