首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用react-testing-library触发(分派)自定义事件

使用react-testing-library触发(分派)自定义事件
EN

Stack Overflow用户
提问于 2021-05-06 19:12:33
回答 1查看 641关注 0票数 0

有没有办法用react-testing library触发一个自定义事件?我在他们的文档中找不到这样的例子。

代码语言:javascript
复制
useEffect(() => {
  document.body.addEventListener('customEvent', onEvent);
}, []);

我想触发自定义事件(某事物例如fireEvent('customEvent')并测试是否调用了onEvent

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-06 20:14:28

您可以使用fireEventdocument.body HTML元素上分派CustomEvent。为了检查是否调用了onEvent事件处理程序,我在console.log()方法中添加了spy。

例如。

index.tsx

代码语言:javascript
复制
import React, { useEffect } from 'react';

export function App() {
  useEffect(() => {
    document.body.addEventListener('customEvent', onEvent);
  }, []);

  function onEvent(e) {
    console.log(e.detail);
  }

  return <div>app</div>;
}

index.test.tsx

代码语言:javascript
复制
import { App } from './';
import { render, fireEvent } from '@testing-library/react';
import React from 'react';

describe('67416971', () => {
  it('should pass', () => {
    const logSpy = jest.spyOn(console, 'log');
    render(<App />);
    fireEvent(document.body, new CustomEvent('customEvent', { detail: 'teresa teng' }));
    expect(logSpy).toBeCalledWith('teresa teng');
  });
});

测试结果:

代码语言:javascript
复制
 PASS  examples/67416971/index.test.tsx (8.781 s)
  67416971
    ✓ should pass (35 ms)

  console.log
    teresa teng

      at console.<anonymous> (node_modules/jest-environment-enzyme/node_modules/jest-mock/build/index.js:866:25)

-----------|---------|----------|---------|---------|-------------------
File       | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-----------|---------|----------|---------|---------|-------------------
All files  |     100 |      100 |     100 |     100 |                   
 index.tsx |     100 |      100 |     100 |     100 |                   
-----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        9.638 s

包版本:

代码语言:javascript
复制
"@testing-library/react": "^11.2.2",
"react": "^16.14.0"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67416971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档