Description
react-testing-library
version:2.3.0
node
version:9.9.0
yarn
version:1.5.1
No way to update props on same component instance like enzyme's
wrapper.setProps({ url: url1 });
What you did:
I'm looking to port react-fetch-component to use react-testing-library mostly due to Enzyme incomplete React 16 support especially for React.createContext()
which I plan to use for a feature. As of now they have a merged fixed but has not been released yet.
With that said, I'm having difficulty porting over to react-testing-library. I understand it's goal of encouraging good testing practices by not accessing an instance of a component. Pretty much all of my tests were accessing the promises
instance prop to coordinate when a fetch was complete / etc. For most of these cases, I've been able to wait()
for the number of mock calls to match my expectations (not exactly my intentions, but it works).
await wait(() => expect(mockChildren.mock.calls.length).toBe(3));
One case where I'm having difficultly working around this issue is not having an equivalent setProps()
capability like enzyme. I have a test that renders the <Fetch />
component 3 times with cache
enabled which is by default instance level. With enzyme's setProps
I can guarantee the same instance is being used, but I don't see a way to do this with react-testing-library.
What happened:
Unable to change props
Suggested solution:
Expose a setProps
equivalent helper from render
(although this might be against the goal of the library).