reactjs - 第一次测试运行时未创建快照
问题描述
过去一周我一直在尝试使用 Jest 编写一些测试。我在基本断言方面没有遇到任何问题,但是当我尝试做一些快照时,我撞到了墙上。据我了解,第一次运行测试时会创建一个快照,然后使用该快照与新快照进行比较。但是当我运行测试它失败并且没有创建快照。我已经尝试了一些东西,但这里有一个代码片段......
import React from 'react';
import UserOptions from './UserOptions';
import {Provider} from "react-redux";
import {store} from "../../redux/configureStore";
import {NavLink} from "react-router-dom";
import renderer from "react-test-renderer";
describe('the user options component', ()=>{
it('should match snap shot', ()=>{
const tree = renderer
.create(<NavLink to="#"/>)
.toJSON();
expect(tree).toMatchSnapshot();
}); // this fails
});
我也收到这个错误,但我不知道该怎么做......
console.error node_modules/react-test-renderer/cjs/react-test-renderer.development.js:9194 组件出现上述错误:in Route (created by NavLink) in NavLink (at UserOptions.test.js:43 )
我意识到这可能是配置问题,而不是代码问题。我一直在研究我能想到的一切,但没有找到任何有用的东西。在这一点上,欢迎所有建议。
解决方案
NavLink
是一个组件,它是 的一部分react-router-dom
。
它被设计用于包装内Router
。
如果组件在 a 之外呈现,则该NavLink
组件旨在引发错误,这就是Router
您尝试自行呈现它时看到的错误。
因为NavLink
它在渲染时抛出一个错误,所以测试失败并出现该错误和这一行:
expect(tree).toMatchSnapshot();
...永远不会达到,因此永远不会创建快照。
推荐阅读
- javascript - 在 HTML 视图中的特定文本之前添加行距
- api - 拥有一个 facebook 业务管理帐户来使用 WhatsApp Business API 是否有必要?
- sql - 如何从带有条件的sql表中删除重复项
- delphi - 如何启用多个位按钮?
- python-3.x - 在不影响它的情况下测量 python 代码的性能
- python - 如何将变量传递给 Django 表单?
- javascript - 使用带有 javascript 参数的 javascript 调用 PHP 函数
- java - PostgresQL 和 Hibernate 自动生成(不是 PK)值
- sql - 连接 3 个表时重复行
- swift - 成功启用触摸ID后如何在下次打开应用程序时使用触摸ID登录