【问题标题】:How do I mock MediaSource using jest?如何使用 jest 模拟 MediaSource?
【发布时间】:2020-08-14 10:15:14
【问题描述】:

我有一个依赖于 MediaSource 的 JavaScript (React) 视频组件。在控件的顶部,我有以下代码行(在全局范围内,而不是在组件内部)。

const mediaSource = 'MediaSource' in window ? new MediaSource() : null;

当我渲染我的组件时,如果 mediaSource 为空,我会返回一个错误。这使得测试这个组件变得很棘手。

有人知道如何模拟 MediaSource 以使我能够测试此组件吗?

谢谢

【问题讨论】:

    标签: javascript unit-testing mocking jestjs media-source


    【解决方案1】:

    您可以根据需要在测试前定义window 属性。

    https://jestjs.io/docs/ru/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom

    Object.defineProperty(window, 'MediaSource', {
      writable: true,
      value: jest.fn().mockImplementation((params) => ({
        // MediaSource implementation goes here
        addEventListener: jest.fn(),
      })),
    });
    

    【讨论】:

    • 如果我在尝试对组件进行浅层渲染之前添加它,我仍然会让 mediaSource 返回为 null
    • 好的。尝试如下使其变得懒惰:const mediaSource = () => ('MediaSource' in window ? new MediaSource() : null;)
    猜你喜欢
    • 2018-01-26
    • 2020-07-04
    • 2017-09-30
    • 1970-01-01
    • 2018-12-25
    • 2021-02-15
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多