react-virtualized
Version:
React components for efficiently rendering large, scrollable lists and tabular data
33 lines (26 loc) • 1.06 kB
JavaScript
import ReactDOM from 'react-dom';
/**
* Helper method for testing components that may use Portal and thus require cleanup.
* This helper method renders components to a transient node that is destroyed after the test completes.
* Note that rendering twice within the same test method will update the same element (rather than recreate it).
*/
export function render(markup) {
if (!render._mountNode) {
render._mountNode = document.createElement('div');
// Unless we attach the mount-node to body, getBoundingClientRect() won't work
document.body.appendChild(render._mountNode);
afterEach(render.unmount);
}
return ReactDOM.render(markup, render._mountNode);
}
/**
* The render() method auto-unmounts components after each test has completed.
* Use this method manually to test the componentWillUnmount() lifecycle method.
*/
render.unmount = function () {
if (render._mountNode) {
ReactDOM.unmountComponentAtNode(render._mountNode);
document.body.removeChild(render._mountNode);
render._mountNode = null;
}
};