未捕获的错误:useNavigate() 只能在赛普拉斯单元测试用例中的 <Router> 组件的上下文中使用
Posted
技术标签:
【中文标题】未捕获的错误:useNavigate() 只能在赛普拉斯单元测试用例中的 <Router> 组件的上下文中使用【英文标题】:Uncaught Error: useNavigate() may be used only in the context of a <Router> component in cypress unit testcases 【发布时间】:2021-12-25 13:00:44 【问题描述】:我正在尝试为与柏树反应的组件编写“单元测试”。 关注链接cypress docs on component testing
当我为一个组件编写测试用例并尝试使用“npx cypress open-ct”运行时 然后得到上述错误(问题标题)... 注意:登录时实现 oAuth2 !!! 我的 index.spec.js 文件是
import * as React from 'react';
import mount from '@cypress/react';
import User from './index';
describe('User component', ()=>
before('loginApi', ()=>
cy.login();
//login() has login-logic and setting localStorage (placed in "commands.js" file)
//even if cy.login() is commented, error is same (so guessing this not reason of error)
)
it('Mount user', () =>
mount(<User />);
);
)
观察1:在赛普拉斯浏览器上,TEST BODY“mount”值为
查找附加的错误屏幕截图。
【问题讨论】:
【参考方案1】:经过一番折腾,我发现...
mount
useNavigation() 将仅在上下文中使用 结果在这种情况下,如果您缺少 BrowserRouter 依赖项,则您在路由页面中使用的方式(任一)import BrowserRouter as Router from 'react-router-dom';
import BrowserRouter from 'react-router-dom';
import * as React from 'react';
import mount from '@cypress/react';
import User from './index';
import BrowserRouter as Router from 'react-router-dom';
describe('User component', ()=>
it('Mount user', () =>
const onSubmit= cy.stub();
//or any other function which is probably used by ur component
mount(
<Router>
<User onSumbit=onSubmit/>
</Router>
);
);
);
【讨论】:
以上是关于未捕获的错误:useNavigate() 只能在赛普拉斯单元测试用例中的 <Router> 组件的上下文中使用的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:未捕获的错误:未找到“Omnipay\Omnipay”类
Bootstrap 设置错误:未捕获 ReferenceError:未定义 jQuery 和未捕获错误:Bootstrap 的 JavaScript 需要 jQuery