我试图用开玩笑的框架运行单元测试。
我的项目中有一些用 typescript 编写的与webrtc相关的代码。

我不断收到此错误。
我试图 mock 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,但是没有多少可以弄清楚的。

最佳答案

mediaDevices接口(interface)尚未在JSDOM中实现。您可能可以使用其官方文档中的以下代码 stub 来模拟它:https://jestjs.io/docs/en/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom

10-06 04:22