【问题标题】:How to mock video duration in react testing library?如何在反应测试库中模拟视频持续时间?
【发布时间】:2021-07-24 07:02:48
【问题描述】:

如何使用 react-testing 库模拟火灾事件 loadedMetadata 的视频持续时间?

在我的 React 代码中,我正在使用 loadedMetaData 事件侦听器检索视频持续时间:

const MyVideo = () => {
   const [videoDuration, setVideoDuration] = useState(0);

   const handleMetadataLoaded = e => {
      setVideoDuration(e.currentTarget.duration);
   }

   return (
      <video
         data-testid="vidMyVideo"
         src="*some_source*"
         poster="*poster_image*"
         onLoadedMetadata={handleMetadataLoaded}
      />

   );

}

我尝试对上面的代码进行单元测试:

import '@testing-library/jest-dom/extend-expect';
import { act, fireEvent, render } from '@testing-library/react';

...

const MyVideo = require('../').default;
const { findByTestId } = render(
   <MyVideo />
);
const inlineVideo = await findByTestId('vidMyVideo');
// the event is fired but I got NaN for the duration. how to mock it?
await act(async () => fireEvent.loadedMetadata(inlineVideo));

loadedMetadata 被解雇了,但在此期间我得到了 NaN。 如何模拟视频时长?

【问题讨论】:

    标签: reactjs jestjs react-testing-library


    【解决方案1】:

    你可以修改jsdom对象

    Object.defineProperty(inlineVideo, 'duration', {
       writable: true,
       value: 10,
    });
    

    【讨论】:

      猜你喜欢
      • 2022-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 2016-12-17
      相关资源
      最近更新 更多