官术网_书友最值得收藏!

Extracting a test helper

The Git tag for this section is extracting-helpers. It contains solutions to the exercises from the previous chapter, so if you haven't completed the Exercises section yourself, then you should move to this tag now so that you're up to date.

For more detailed instructions, see the To get the most out of this book section in the Preface.

In the first chapter, our test suites shared common code for constructing a DOM container element before each test. This element was used as the React root element. By doing this for each test, we avoided modifying global state. Let's extract that code so that we can re-use it across all of our test suites.

The shared code can be split into four parts:

  • A common declaration of container in the describe block, accessible by all tests
  • A beforeEach call to set container to a newly constructed container element
  • A render function to insert DOM elements into the container
  • Various expectations on the container to verify its content

At first glance, it might seem difficult to extract this logic since the container variable is manipulated in both a beforeEach block and each of our test functions. However, it's possible if we use a higher-order function that encapsulates its own state.

Create a new file test/domManipulators.js, and add the following content:

import ReactDOM from 'react-dom';

export const createContainer = () => {
const container = document.createElement('div');

return {
render: component => ReactDOM.render(component, container),
container
};
};

Calling domManipulators creates an empty DOM element, container, and then returns an object with two properties: render and container. We'll see how these can be used in the next section.

主站蜘蛛池模板: 荥经县| 元氏县| 济源市| 遂平县| 唐河县| 桐城市| 海丰县| 大新县| 岫岩| 佛坪县| 黔江区| 黄陵县| 平远县| 城市| 灵台县| 平度市| 西宁市| 太和县| 呼玛县| 日照市| 博白县| 奇台县| 高青县| 舞阳县| 宾川县| 霍林郭勒市| 云南省| 盖州市| 克拉玛依市| 兰考县| 仙居县| 怀宁县| 乌拉特后旗| 蓬莱市| 沛县| 晋城| 贺兰县| 茶陵县| 枣庄市| 喜德县| 无极县|