javascript - 如何在 Jest 单元测试中查看渲染的 React 组件是什么样子?

标签 javascript unit-testing reactjs jestjs

我正在尝试对 React 组件运行测试。我需要检查渲染后的样子。尝试使用 ReactDOMServer.renderToString() 但失败。这是代码:

import { NewRec } from '../src/components/edit';
import { shallow } from 'enzyme';
import React from 'react/lib/ReactWithAddons';
import ReactDOMServer from 'react-dom/server';

jest.mock('react-dom');
jest.mock('react/lib/ReactDefaultInjection');

describe('NewRec component', () => {
    const component = shallow(<NewRec />);
    it('returns true if blah blah', ()=>{
        var htmlstring = ReactDOMServer.renderToString(<component />);
    });
});

我收到以下错误:

Invariant Violation: There is no registered component for the tag component

我尝试这样调用它: var htmlstring = ReactDOMServer.renderToString(component); 然后我收到此错误:

Invariant Violation: renderToString(): You must pass a valid ReactElement.

有谁知道问题出在哪里吗?

最佳答案

snapshot feature在 Jest 中,它将渲染的树存储为文件。请注意,您必须安装enzyme-to-json以及将 enzyme 渲染的组件转换为快照方法可以理解的东西。

import { NewRec } from '../src/components/edit';
import { shallow } from 'enzyme';
import { shallowToJson } from 'enzyme-to-json';

describe('NewRec component', () = > {
  it('returns true if blah blah', () = > {
    const component = shallow(<NewRec />);
    expect(shallowToJson(component)).toMatchSnapshot();
  });
});

这将在测试文件夹中的 __snapshot__ 文件夹中创建一个新文件,您可以在其中检查渲染结果。每次重新运行测试时,都会根据快照测试组件。

关于javascript - 如何在 Jest 单元测试中查看渲染的 React 组件是什么样子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40504222/

相关文章:

c++ - VC++ native 单元测试,找不到调试符号

ios - OCMock [OCMAnyConstraint isProxy] : message sent to deallocated instance, 发生了什么事?

javascript - Next.js React 应用程序不显示自定义组件内容

javascript - 如何在 Ember 应用程序中使用全局变量,特别是在 index.html 中?

javascript - 如何使用 React Native 在 Android 设备上打开 native 邮件(与 'Linking.openURL()' iOS 相同)

javascript - Apollo useQuery Hook 无法使用 writeQuery() 方法从缓存获取更新。没有看到错误

javascript - ReactJS prop 绑定(bind)是如何工作的?

php - 建议制作在线编码竞赛网站的更好方法

unit-testing - 如何在 VueJS 中测试计算属性?

javascript - 如何从重组转换为 Hook ?