如何使用玩笑模拟MediaSource?

问题描述

我有一个JavaScript(响应)视频组件,该组件取决于MediaSource。在控件的顶部,我具有以下代码行(在全局范围内,而不是在组件内部)。

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

渲染组件时,如果mediaSource为null,则返回错误。这使对该组件的测试变得棘手。

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

谢谢

解决方法

您可以在测试之前定义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(),})),});