参考错误:未定义加密。

3
我正在测试我的React应用程序,当运行执行Web Cryptography API的测试,特别是await crypto.subtle.generateKey时,我收到以下错误消息

ReferenceError:未定义crypto

似乎React Testing Library没有访问该库,这是有道理的,因为这是浏览器本地的API,而React Testing Library模拟了一个库。
如何添加库以使测试通过?按照TDD原则,我不应修改代码以使其通过测试。

2
你可能需要在 setupTests 文件中将一个虚拟版本附加到窗口对象上。类似于这样:https://dev59.com/V1QK5IYBdhLWcg3wBral - Jayce444
2个回答

0

我遇到了和你一样的问题,但实际上这并不是一个问题。

因为这个API只能在本地主机和HTTPS环境下运行。

因此,你出现错误的情况可能是在HTTP环境下运行。


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

0
正如@Jayce44所建议的那样,您可以将模拟对象添加到window对象中。这是一种很好的模式,可以在测试中清除任何随机组件(特别是在TDD中)。定义一个虚假/模拟加密模块,在其中根据测试用例定义其输出,有许多好处可以编写稳健的测试用例。根据您使用的框架,这可能看起来像:
beforeEach(() => {
  setupCryptoWithExpectedValue(42)
});

test(() => {
  productionCodeUsingCrypto()
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接