render
functionThe render
function is the entry point for writing React Native Testing Library tests. It deeply renders the given React element and returns helpers to query the output components' structure.
When using React context providers, like Redux Provider, you'll likely want to wrap rendered component with them. In such cases, it's convenient to create your own custom
render
method. Follow this great guide on how to set this up.
The behavior of the render
method can be customized by passing various options as a second argument of the RenderOptions
type:
wrapper
optionThis option allows you to wrap the tested component, passed as the first option to the render()
function, in an additional wrapper component. This is useful for creating reusable custom render functions for common React Context providers.
concurrentRoot
optionSet to true
to enable concurrent rendering used in the React Native New Architecture. Otherwise render
will default to legacy synchronous rendering.
createNodeMock
optionThis option allows you to pass createNodeMock
option to ReactTestRenderer.create()
method in order to allow for custom mock refs. You can learn more about this option from React Test Renderer documentation.
unstable_validateStringsRenderedWithinText
optionThis options is experimental, in some cases it might not work as intended, and its behavior might change without observing SemVer requirements for breaking changes.
This experimental option allows you to replicate React Native behavior of throwing Invariant Violation: Text strings must be rendered within a <Text> component
error when you try to render string
value under components different than <Text>
, e.g., under <View>
.
React Test Renderer does not enforce this check; hence, by default, React Native Testing Library also does not check this. That might result in runtime errors when running your code on a device, while the code works without errors in tests.
The render
function returns the same queries and utilities as the screen
object. We recommended using the screen
object as more developer-friendly way.
See this article from Kent C. Dodds for more details.