gpt4 book ai didi

javascript - 测试失败: ReferenceError: SpeechSynthesisUtterance is not defined

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:14 24 4
gpt4 key购买 nike

我最近尝试在我的项目中实现文本到语音,并决定使用纯 JavaScript 解决方案。(https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance)

我目前正在使用React@15.4.2和enzyme@2.9.1。

代码:

export default class DummyComponent extends React.Component {
/* */
speak(text) {
var synth = window.speechSynthesis;
var utterThis = new SpeechSynthesisUtterance(text);
synth.speak(utterThis);
}
/* */
}

一切正常,但每当我尝试测试我的代码时,我都会在标题中收到错误。

示例测试:

it('dummytest', function(done){
const prop1 = 'foo';
const prop2 = 'bar';
const wrapper = shallow(<DummyComponent prop1 = {foo} prop2={bar}/>);
expect(wrapper.html()).to.include("foobar");
done();
});

ReferenceError: SpeechSynthesisUtterance is not defined

我在这个类中测试什么并不重要,我对该组件的所有测试都失败了,因为 Enzyme 方法shallow、mount 和 render 不知道SpeechSynthesisUtterance

SpeechSynthesisUtterance 实际上来自 typescript 库。( typescript /lib/lib.es6.d.ts)

我已经尝试过的事情:

  • 将 Enzyme 升级到 3.2(会产生完全相同的错误)
  • 导出函数
  • 使用 tsconfig 文件编译 lib.es6.d.ts

对于后者,我尝试了一系列不同的设置,并尝试在文件顶部添加“export {}”。这实际上引发了这个错误:

node_modules/typescript/lib/lib.es6.d.ts(5769,15): error TS2470: 'Symbol' reference does not refer to the global Symbol constructor object.

我没有 typescript 经验,所以我不知道下一步该尝试什么。

最佳答案

Typescript 具有接口(interface)定义,因为该函数在浏览器中是全局(检查 chrome 和 firefox),因此您可以引用它。但是对于 Node 环境不是全局的,这就是您的测试失败的原因,您应该导入它来测试它,但我认为这是不可用的,所以如果您想测试也许您可以为该函数创建一个 stub 版本

关于javascript - 测试失败: ReferenceError: SpeechSynthesisUtterance is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47430739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com