reactjs - 未捕获的错误:useNavigate() 只能在 a 的上下文中使用cypress 单元测试用例中的组件
问题描述
我正在尝试为与柏树反应的组件编写“单元测试”。
遵循关于组件测试的链接 cypress 文档
当我为一个组件编写测试用例并尝试使用“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”值是 <Unknown.../>
观察 2:[网络选项卡] 用户组件进行 api-call 并以 401 失败
(#known 令牌问题,甚至因正确的令牌而失败)
解决方案
打了几圈后才发现...
mount <Unknown... />基本上会导致这种情况,如果您没有添加相应 index.jsx 文件中使用的所有依赖项。
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> ); }); });
推荐阅读
- javascript - 如何在没有字符串的情况下操作 Javascript 中的 52-32 位?
- c# - Newtonsoft JSON 反序列化适用于本地和实时环境,但不适用于 ASP.NET MVC 应用程序的测试
- node.js - 使用指向其个人资料的链接获取用户的 facebook id
- angular - 如何使用 [(ngModel)] 绑定按钮单击的值
- image - UWP:Gridview 中缓慢的 SVG 图像加载
- javascript - 如何减少 requestAnimationFrame() 方法中的 CPU 使用率
- django - 调度程序会减慢您的 Web 应用程序吗?
- java - 是否有一种轻量级方法可以在 Java 9+ 中添加安全点
- c++ - SHBrowseForFolderA 错误
- python - 为什么`repo init` 会因 GitError 而失败?