typescript - ReferenceError:没有使用 Jest 和 Vue Typescript 定义 MediaStream
问题描述
我在 Vue 中有一个组件(写在打字稿上),它有一个类型可以是 a或的属性String
,如下所示Blob
MediaStream
@Prop({ type: [String, Blob, MediaStream] }) readonly srcObject?: string | {};
当我运行调用此组件的单元测试时,它会引发错误并显示以下消息:
ReferenceError: MediaStream is not defined
66 | })
67 | export default class Player extends Vue {
> 68 | @Prop({ type: [String, Blob, MediaStream] }) readonly srcObject?: string | {};
| ^
69 | @Prop({ type: String }) readonly mediaType?: string;
70 | @Prop({ type: Boolean }) readonly srcIsBeingRecorded?: boolean;
71 | @Prop({ type: Boolean }) readonly autoplay?: boolean;
我尝试了不同的方法,例如将MediaStream
对象添加到全局window
模拟中,但不幸的是,它没有成功。之后,我尝试替换MediaStream
forwindow.MediaStream
以避免该... is not defined ...
消息。我在网上找到但没有成功。我不明白为什么 jest 没有找到该MediaStream
类型或为什么它会崩溃。如果有人可以帮助我解决此错误或向我展示正确的方法,我将非常优雅。
有关以下依赖版本的信息:
λ dazh [work] at feature/global-handling !?
→ npx tsc --version [a81cdad]
Version 3.5.3
λ dazh [work] at feature/global-handling !?
→ npx vue --version [a81cdad]
@vue/cli 4.3.1
λ dazh [work] at feature/global-handling !?
→ npx jest --version [a81cdad]
24.9.0
λ dazh [work] at feature/global-handling !?
→ cat package.json | grep '"vue":' [a81cdad]
"vue": "^2.6.11",
解决方案
关于 MediaStream 接口,我遇到了类似的问题。我的解决方案是使用mockImplementation
for MediaStream
。这是我的套件配置的片段:
beforeAll(() => {
window.MediaStream = jest.fn().mockImplementation(() => ({
addTrack: jest.fn()
// Add any method you want to mock
}))
})
我希望这会有所帮助
推荐阅读
- reactjs - prevent side menu in SPA
- regex - Open Refine: Split column using regular expressions that include 2 or more names joined by "And"
- c# - WPF binding textbox to datarow cell: SetColumnError?
- excel - 拆分基于分隔符的单元格值并插入新列
- javascript - 如果字段为空并且用户正在尝试提交表单,如何使输入字段边框变为红色
- javascript - how can I know I have access to this state in this function?
- python - how can Control/write Temperature value with RS485port, from Django web?
- python - spark-submit 不从 s3 读取文件,只是卡在上面
- android - 在 Koin 中,何时创建和销毁视图模型?
- laravel - 拉拉维尔 | 从关联数组中过滤空值