首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Jest中嘲弄AudioContext()

在Jest中嘲弄AudioContext()
EN

Stack Overflow用户
提问于 2021-12-02 16:29:44
回答 1查看 407关注 0票数 0

我在我的项目中的函数中有以下代码;

代码语言:javascript
运行
复制
....
if (state.context == null) {
    return {
        ...state,
        context: new AudioContext()
    }
}
....

我在试着在Jest测试这种行为。然而,Jest使用不支持AudioContext()的jsdom

在我使用的其他测试中;

代码语言:javascript
运行
复制
.....
jest.spyOn(global.Math, 'random').mockReturnValue(0.3);
....
jest.spyOn(global.Math, 'random').mockRestore();
....

这不管用。当我调用spyOn(global /* or window */, 'AudioContext')时,我得到了错误Cannot spy the AudioContext property because it is not a function; undefined given instead

我还发现了这个图书馆,它似乎可以工作,只是它要求您在代码中使用这个函数的模拟版本,而不是像我对random()那样重载它。

我会将jsdom替换为我的测试环境,但是,我还没有找到一个支持AudioContext()的环境。

有没有不改变源代码的解决方案?传递到在运行时调用AudioContext()为模拟或函数AudioContext的函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-03 01:29:43

我是问题中提到的图书馆的作者。我认为以下几点应该有效。

代码语言:javascript
运行
复制
import { AudioContext } from 'standardized-audio-context-mock';

global.AudioContext = AudioContext;

然而,我自己并不是一个Jest用户。如果它不起作用,请让我知道,如果您遇到任何错误,请随时通知公开问题

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70203182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档