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

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.

主站蜘蛛池模板: 策勒县| 馆陶县| 长沙市| 克拉玛依市| 延安市| 大竹县| 枝江市| 界首市| 吕梁市| 确山县| 池州市| 南宫市| 铜川市| 探索| 马龙县| 万年县| 六枝特区| 厦门市| 遵义市| 独山县| 平乡县| 灵宝市| 涟水县| 山阳县| 十堰市| 霍山县| 宜丰县| 正安县| 珲春市| 冷水江市| 扬中市| 宁阳县| 孟津县| 如东县| 玉环县| 海阳市| 平远县| 景东| 大渡口区| 微博| 右玉县|