如何使用玩笑模拟MediaSource?

时间:2020-08-14 10:15:14

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

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

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

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

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