问题描述
我有一个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(),})),});