此文章是翻译Shallow Renderer这篇React(版本v16.2.0)官方文档。

Shallow Renderer

Importing

import ShallowRenderer from 'react-test-renderer/shallow'; // ES6
const ShallowRenderer = require('react-test-renderer/shallow'); // ES5 with npm

概览

当为React 写单元测试时, 浅渲染会变得十分有用。浅渲染使你渲染组件的“第一层”,并且对组件的 render 方法的返回值进行断言,不用担心子组件的行为,组件并没有实例化或被渲染。浅渲染并不需要 DOM。

例如,如果你有如下的组件:

function MyComponent() {
  return (
    <div>
      <span className="heading">Title</span>
      <Subcomponent foo="bar" />
    </div>
  );
}

然后你可以断言:

import ShallowRenderer from 'react-test-renderer/shallow';

// in your test:
const renderer = new ShallowRenderer();
renderer.render(<MyComponent />);
const result = renderer.getRenderOutput();

expect(result.type).toBe('div')
expect(result.props.children).toEqual([
  <span className="heading">Title</span>,
  <Subcomponent foo="bar" />
]);

浅测试当前游戏以讹限制,换句话说就是不支持refs。

注意: 我们还建议看看Enzyme 的Shallow Rendering API。它在相同的功能上提供了一个更棒的高级 API。

参考

shallowRenderer.render()

你可以把shallowRenderer 想象成一个用来渲染你正在测试的组件的“地方”,并且你可以从那里取到该组件的输出。

shallowRenderer.render()ReactDOM.render()很像。但是它不需要DOM 并且只渲染一层。这就意味着你可以测试组件,不管它们的子组件是怎么实现的。

shallowRenderer.getRenderOutput()

shallowRenderer.render() 调用之后,你可以使用shallowRenderer.getRenderOutput() 得到浅渲染的输出。

然后你就可以对输出进行断言了。

results matching ""

    No results matching ""