typescript - 引用错误 : MediaStream is not defined - in unitTest with Jest

标签 typescript unit-testing jestjs webrtc mediastream

我正在尝试使用 jest 框架运行单元测试。
我的项目中有一些用 typescript 编写的 webrtc 相关代码。

我不断收到此错误。
我试图模拟 MediaStream 但无济于事。

我的测试文件:

import * as React from "react";
import * as renderer from 'react-test-renderer';
import { Provider } from 'react-redux';
const configureStore = require('redux-mock-store');


import App from '../App';
import mockData from "../mockData";
const mockStore = configureStore();

describe('Tests related to App', () => {
    it('Capturing Snapshot of App', () => {
        let store = mockStore(mockData.getStore());
        const renderedValue = renderer.create(<Provider store={store}><App /></Provider>).toJSON();;
        expect(renderedValue).toMatchSnapshot();
    });
})

我了解 MediaStream 是平台级属性。
所以我试图 mock ,这样 Jest 会理解,但无济于事。

我的模拟代码。
let mediaStream = {
        getVideoTracks: function() {
            return [];
        }
    }

    const mediaDevicesMock = {
        getUserMedia: jest.fn(() => { return Promise.resolve(mediaStream)})
      };

    global.navigator.mediaDevices = mediaDevicesMock;

我可能在多个层面上都错了,任何建议和纠正都是最受欢迎的。
我试图理解这个 link ,但想不出太多。

Jest Version: "^22.1.4"

最佳答案

我 mock 过 MediaRecorder为了通过这样的测试:

Object.defineProperty(window, 'MediaRecorder', {
    writable: true,
    value: jest.fn().mockImplementation((query) => ({
        start: jest.fn(),
        ondataavailable: jest.fn(),
        onerror: jest.fn(),
        state: '',
        stop: jest.fn()
    }))
});
此外,我还 mock 了 isTypeSupported方法:
Object.defineProperty(MediaRecorder, 'isTypeSupported', {
    writable: true,
    value: () => true
});

关于typescript - 引用错误 : MediaStream is not defined - in unitTest with Jest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57424190/

相关文章:

javascript - 脚本中的 Angular <div> 颜色变化

javascript - 如何自动加载 Node 项目中包含特定装饰器的文件

ruby-on-rails - Rails 奇怪的错误 => IndexError : string not matched

javascript - Jest 会吞下 console.log 语句吗?有办法改变这个吗?

angular - 如何在不弄乱下拉值的情况下使 Angular Reactive Formarray 中的级联下拉列表工作

带有组件的 Angular7 元素出现架构错误

unit-testing - 使用 lambda 的条件最小起订量返回值

java - 在 Java 中比较两个相似的 XML 数据与无序元素/属性

reactjs - 如何在 JEST 中模拟 $.ajax 调用

javascript - 如何测试包含在 "withNamespaces"HOC 中且具有 "innerRef"的组件?