gpt4 book ai didi

javascript - react 笑话和 MSAL 得到 BrowserAuthError

转载 作者:行者123 更新时间:2023-12-05 00:26:46 31 4
gpt4 key购买 nike

我正在尝试测试一些使用 MSAL 进行身份验证的组件。
到目前为止,我有一个简单的测试,测试我的组件是否可以渲染,如下所示:

let container;
beforeEach(() => {
container = render(<NavBar/>)
});
test('Component renders', () => {
expect(container).not.toBeNull()
})
当我运行测试时,我收到以下错误:
BrowserAuthError: crypto_nonexistent: The crypto object or function is not available. Detail:Browser crypto or msCrypto object not available.

at BrowserAuthError.AuthError [as constructor] (node_modules/@azure/msal-browser/dist/index.cjs.js:545:24)
at new BrowserAuthError (node_modules/@azure/msal-browser/dist/index.cjs.js:7096:28)
at Function.Object.<anonymous>.BrowserAuthError.createCryptoNotAvailableError (node_modules/@azure/msal-browser/dist/index.cjs.js:7113:16)
at new BrowserCrypto (node_modules/@azure/msal-browser/dist/index.cjs.js:7413:36)
at new CryptoOps (node_modules/@azure/msal-browser/dist/index.cjs.js:7782:30)
at PublicClientApplication.ClientApplication (node_modules/@azure/msal-browser/dist/index.cjs.js:10027:58)
at new PublicClientApplication (node_modules/@azure/msal-browser/dist/index.cjs.js:11307:23)
我不确定以上是什么意思,但据我所知,发生此错误是因为 session 未经过身份验证。
因此,我的问题可以分为以下几类:
  • 这个错误是什么意思?
  • 我该如何解决这个错误? (我们可以绕过 MSAL 进行测试吗?)
  • 最佳答案

    所以基本上,我发现我的 <NavBar/>组件依赖于两个 MS Graph API 调用,即 getAccountData()setAccountData() ,这显然需要一个 token 才能运行,并导致上述令人讨厌的错误。
    因此,我决定通过简单地模拟它们来绕过这两个函数,如下所示:

    jest.mock('../msGraph', () => ({ setAccountData: jest.fn() }))
    jest.mock('../msGraph', () => ({ getAccountData: jest.fn() }))
    我不依赖从 Graph 获取数据来执行我的测试 - 所以这两个模拟函数不返回任何数据。 (但是,我可以通过将其添加到 jest.fn() 的括号内来做到这一点)

    关于javascript - react 笑话和 MSAL 得到 BrowserAuthError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68408132/

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