facebook/react

Write documentation for `react-test-renderer`

KnutHelland opened this issue · 5 comments

This is the first day I've used react-test-renderer, and I've already stumbled upon three problems:

  • The injectEnvironment called twice bug #7386
  • The fact that refs is just null when rendered with react-test-renderer #7371
  • When setting a ref on a dom element, React erroneously warns about stateless function components cannot be given refs. (also probably related to #7371)

react-test-renderer is going to be shipped with create-react-app very soon (?) (it's in react-test-renderer@0.3.0-alpha), so I think it deserves some more comprehensive documentation as soon as possible. With at least some troubleshooting bulletpoints and some text about how one are supposed to do with refs.

I sometimes use refs from componentDidMount. For example for setting focus on an input this.refs.input.focus(). But such code will fail with cannot call focus() on undefined. Should we always test if a ref isn't undefined before using them? Or do you have some plans for react-test-renderer in near future that will solve this issue in some way?

I'm hitting the injectEnvironment called twice bug with react-bootstrap and considering my options.

While we're talking react-test-render docs, it may be obvious, but you can't use react-test-renderer with React 0.14 code due to module dependencies, this is more of a Jest documentation bug. jestjs/jest#1364

Please see my replies:

#7386 (comment)
#7371 (comment)

The inject bug is slightly more complicated than #7386 (comment), @gaearon -- I've turned off auto-mocking entirely, and it still happens. Here's some more detail on what's been done/suggested: jestjs/jest#1353 (comment)

I've turned off auto-mocking entirely, and it still happens.

Sorry I wasn’t clear. I’m saying the solution to this is to mock react-dom. This has no relation to automocking. You can turn automocking off (that’s what I’d recommend), but you still need to mock react-dom with an empty mock to get snapshot testing working with react-dom references.

Let's track this in #8060.