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

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.

主站蜘蛛池模板: 东乌| 新郑市| 彭州市| 伊宁市| 清水河县| 谷城县| 孙吴县| 惠来县| 子洲县| 张家口市| 五莲县| 乃东县| 尖扎县| 太保市| 时尚| 乐亭县| 清徐县| 玉田县| 古交市| 定西市| 安平县| 高要市| 八宿县| 萨嘎县| 乐亭县| 益阳市| 福州市| 康乐县| 泰州市| 鄂托克旗| 理塘县| 阿鲁科尔沁旗| 新密市| 平凉市| 会泽县| 绥化市| 佛山市| 海口市| 南康市| 子洲县| 朝阳市|