TypeError:运行单元测试用例时 videojs__default.default.getPlugin 不是函数

问题描述 投票:0回答:1

我正在将

videojs-cmcd
videojs
集成到我的项目中,我已按照此 READMe 文件中提供的步骤进行操作。在浏览器中运行应用程序时一切正常,cmcd 数据按预期在 API 中传递。但是当我尝试为我的更改编写单元测试用例时,我收到错误
videojs__default.default.getPlugin is not a function

Test suite failed to run

    TypeError: videojs__default.default.getPlugin is not a function

      1 | import React, { useRef, useEffect, useState } from 'react';
      2 | import videojs from 'video.js';
    > 3 | import '@montevideo-tech/videojs-cmcd';
        | ^
      4 | import { IconButton, useMediaQuery } .....

      at Object.<anonymous> (../../node_modules/@montevideo-tech/videojs-cmcd/dist/videojs-cmcd.cjs.js:1427:44)
      at Object.require (src/video-player/components/video/VideoPlayer.tsx:3:1)
      at Object.<anonymous> (src/video-player/components/video/__tests__/VideoPlayer.test.tsx:5:1)

这是打字稿错误

TypeError
。但我找不到 videojs-cmcd 的
@types/..
定义。我该如何解决这个问题?有什么解决办法吗?

typescript jestjs video.js
1个回答
0
投票

我解决了这个问题,但在 setupTests.ts 文件中添加了以下模拟

jest.mock('@montevideo-tech/videojs-cmcd', () => ({
  videojs__default: {
    default: {
      getPlugin: jest.fn(),
    }
  }
}));

这个 setupTests.ts 在 jest.config.json 中配置如下

"setupFilesAfterEnv": ["<rootDir>/src/setupTests.ts"]
© www.soinside.com 2019 - 2024. All rights reserved.