From 969a4bf74ca55a76dd102c66868b451a793238e5 Mon Sep 17 00:00:00 2001 From: Scott Feeney Date: Tue, 27 Jan 2015 13:44:20 -0800 Subject: [PATCH] Add documentation for shallow testing See #2393 for the original issue, and #2497 for the implementation. --- docs/10.4-test-utils.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/10.4-test-utils.md b/docs/10.4-test-utils.md index f768b69a..0e1bdc49 100644 --- a/docs/10.4-test-utils.md +++ b/docs/10.4-test-utils.md @@ -8,6 +8,46 @@ next: clone-with-props.html `React.addons.TestUtils` makes it easy to test React components in the testing framework of your choice (we use [Jest](http://facebook.github.io/jest/)). +## Shallow rendering + +Shallow rendering allows you to render a component "one level deep" and assert facts about what its render method returns, without worrying about the behavior of child components, which are not instantiated or rendered. This does not require a DOM. + +```javascript +ReactShallowRenderer createRenderer() +``` + +Call this in your tests to create a shallow renderer. You can think of this as a "place" to render the component you're testing, where it can respond to events and update itself. + +```javascript +shallowRenderer.render(ReactElement element) +``` + +Similar to `React.render`. + +```javascript +ReactComponent shallowRenderer.getRenderOutput() +``` + +After render has been called, returns shallowly rendered output. You can then begin to assert facts about the output. For example, if your component's render method returns: + +```javascript +
+ Title + +
+``` + +Then you can assert: + +```javascript +result = renderer.getRenderOutput(); +expect(result.type).toBe('div'); +expect(result.props.children).toEqual([ + Title + +]); +``` + ### Simulate ```javascript