问题描述
我正在测试我的React应用,当它运行执行Web Cryptography API(特别是await crypto.subtle.generateKey
)的测试时,我收到以下错误消息
ReferenceError:未定义加密货币
React Testing库似乎无权访问该库,这很有意义,因为这是浏览器固有的API,并且React Testing库模拟了一个库。
如何添加库以使测试通过?遵循TDD原则,我不应修改代码以使其通过测试。
解决方法
正如@ Jayce44所建议的,您只需向窗口对象添加一个模拟即可。无论如何,擦除测试中的任何随机成分都是一个很好的模式(尤其是在TDD中)。定义一个假/模拟加密模块,根据测试用例定义其输出,这对于编写可靠的测试用例有很多好处。根据所使用的框架,看起来可能像这样:
beforeEach(() => {
setupCryptoWithExpectedValue(42)
});
test(() => {
productionCodeUsingCrypto()
}