【发布时间】:2019-12-14 17:53:53
【问题描述】:
我正在开发一个 JavaScript 库 (https://github.com/yvesgurcan/web-midi-player) 以在 Web 应用程序中启用 MIDI 播放。该库依赖于 Web Audio API 来创建播放这些 MIDI 文件的方法 (https://github.com/yvesgurcan/web-midi-player/blob/test/src/MidiPlayer.js#L50)。但是,我无法使用 Jest (https://github.com/yvesgurcan/web-midi-player/blob/test/tests/midiPlayer.js) 创建有意义的单元测试,因为这些测试无法访问 window 对象,尤其是 window.AudioContext。因此,运行依赖于 AudioContext 的应用程序代码会引发与该对象不存在相关的错误,并且我实际上无法在库中测试很多东西。
我尝试了以下软件包来解决我的问题:jsdom、jsdom-global 和 web-audio-test-api,但这些软件包似乎都没有在环境中注入 AudioContext。
我认为这里的解决方案是 stub/mock AudioContext,但这对于可靠的单元测试来说听起来不是一个好的解决方案。
你们对测试 Web Audio API 有什么建议?存根是这里唯一可行的解决方案吗?
【问题讨论】:
标签: javascript unit-testing jestjs web-audio-api midi