首页 > 解决方案 > 第一次测试运行时未创建快照

问题描述

过去一周我一直在尝试使用 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 )

我意识到这可能是配置问题,而不是代码问题。我一直在研究我能想到的一切,但没有找到任何有用的东西。在这一点上,欢迎所有建议。

标签: reactjsintellij-ideajestjs

解决方案


NavLink是一个组件,它是 的一部分react-router-dom

它被设计用于包装内Router

如果组件在 a 之外呈现,则该NavLink组件旨在引发错误,这就是Router您尝试自行呈现它时看到的错误。

因为NavLink它在渲染时抛出一个错误,所以测试失败并出现该错误和这一行:

expect(tree).toMatchSnapshot();

...永远不会达到,因此永远不会创建快照。


推荐阅读