Reactjs ReferenceError:未定义加密

Reactjs ReferenceError:未定义加密,reactjs,react-testing-library,webcrypto-api,Reactjs,React Testing Library,Webcrypto Api,我正在测试我的React应用程序,当它运行执行的测试时,特别是wait crypto.minute.generateKey我收到以下错误消息 ReferenceError:未定义加密 似乎React测试库没有访问该库的权限,这是有道理的,因为这是浏览器本机的API,React测试库模拟库 如何添加库以使测试通过?遵循TDD原则,我不应该修改代码以使其通过测试。正如@Jayce44建议的那样,您可以只向窗口对象添加一个mock。无论如何,删除测试中的任何随机组件(尤其是在TDD中)都是一种很好的模

我正在测试我的React应用程序,当它运行执行的测试时,特别是
wait crypto.minute.generateKey
我收到以下错误消息

ReferenceError:未定义加密

似乎React测试库没有访问该库的权限,这是有道理的,因为这是浏览器本机的API,React测试库模拟库


如何添加库以使测试通过?遵循TDD原则,我不应该修改代码以使其通过测试。

正如@Jayce44建议的那样,您可以只向窗口对象添加一个mock。无论如何,删除测试中的任何随机组件(尤其是在TDD中)都是一种很好的模式。定义一个伪/模拟加密模块,在其中根据测试用例定义它的输出,对于编写可靠的测试用例有很多好处。根据您使用的框架,这可能类似于:

beforeEach(() => {
  setupCryptoWithExpectedValue(42)
});

test(() => {
  productionCodeUsingCrypto()
}

您可能需要将虚拟版本附加到
setupTests
文件中的窗口对象。大概是这样的: