javascript - 使用 React.memo 时 Jest Snapshot 错误

标签 javascript reactjs jestjs

我正在使用 React.memo 创建一个文件(React 16.6.1).
我使用 jest 23.6 作为快照。

// Work.js
import React, {memo} from "react";
const Work => (
  /* codes */
);

export {Work as WorkNaked};
export default memo(Work);

保存组件渲染Work的快照时,会渲染[object Object]而不是 <Work /> ,这使得后期维护和调试变得困难。

// Container.js
import React, {Component} from "react";

export class Container extends Component {
  render () {
    return (
      <Work />
    );
  }
}
// Container-test.js
describe("Container component", () => {
  const wrapper = shallow(<Container />);

  it("should render contents with a proper slug", () => {
    expect(wrapper).toMatchSnapshot();
  });
});

所以现在我们强制名称如下:

// Work.js
export {Work as WorkNaked};

const memoWork = memo(Work);
/* eslint-disable-next-line immutable/no-mutation */
memoWork.displayName = "memo(Work)";
export default memoWork;

这将呈现 <memo(Work) />在我们的快照中。

在使用 React.memo 导出容器时,是否有更好/更简洁/更简单的名称来显示容器名称?

最佳答案

看起来你遇到了一个 enzyme bug .

pull request添加对备忘录的支持,它应该在快照内部正确呈现。

关于javascript - 使用 React.memo 时 Jest Snapshot 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53273627/

相关文章:

javascript - 手动关闭图层控制窗口(javascript)

javascript - 在 Jest 测试中等待 Promise.all

javascript - 如何使用 cheerio 访问 meta OpenGraph?

javascript - Uncaught ReferenceError : show value is not defined(Only for mobile device)

javascript - 如何从 Reanmited Value 中获取数值?

javascript - 在 React 中将组件状态转换为 JSON

javascript - React 中将子组件的值传递给父组件

javascript - 我如何在 Jest 中测试 axios?

unit-testing - 在作为 Prop 传递的函数上调用 Jest spyOn

javascript - document.referrer 的问题