Closed saiNaruUFL closed 6 months ago
CC:@MatanBobi
rerender
is intended to persist state just like calling root.render()
in React would persist state.
You want to call render
from React Testing Library again to discard the previous Redux state.
Adding to what @eps1lon wrote, regarding what you wrote here:
Our understanding of rerender is that it should work similar to a browser refresh.
That's not a good mental model. rerender
is in fact a component re-render, it's not equal to an unmount + mount again which is what a full page refresh causes.
@MatanBobi thank you for clarifying.
@eps1lon Thank you for the response as well. Regarding our use case:
describeFeature(feature, (f) => {
let viRender = renderWithProviders(<InventoryTab />, {
preloadedState,
})
f.AfterEachScenario(() => {
viRender.rerender();
})
f.Scenario(...);
Are you implying that we should call a new render
within each Scenario? I was hoping to avoid repetitive calls but this seems like the only approach hat makes sense.
@eps1lon @MatanBobi we are still having an issue with state idempotency. We found a nearly identical issue that has not been resolved on Stack Overflow.
We could open a new issue, but all of the details are here so hoping to continue on this thread.
@charlieforward9 I recommend opening a new issue with the use case you're experiencing. As you can see, commenting on closed issues usually gets lost in the notifications mess 😅
@testing-library/react
version: 14.3.1Relevant code or config:
Renderer Code
Test Code
What you did:
Called
rerender
after initial call torenderWithProviders
to test resetting redux state.renderWithProviders
is a custom wrapper to include redux storeWhat happened:
After calling
rerender
, the redux store still persists state from initial render call. The screenshot below shows that the screen rerenders appropriately, but the redux store does not reset.Reproduction:
https://github.com/Agriculture-Intelligence/react-test-library-redux-example/tree/master
Related to: https://github.com/testing-library/react-testing-library/issues/218#issuecomment-436730757 https://github.com/testing-library/react-testing-library/issues/950 https://github.com/testing-library/testing-library-docs/issues/1156 ?
Problem description:
rerender
should reset the wrapper as well. Our understanding of rerender is that it should work similar to a browser refresh.Ultimately, we want to test our components using Gherkin syntax and reset the component for every scenario as such
This Gherkin syntax testing is not included in the reproduction to simplify the issue we are having, this testing style comes from https://github.com/amiceli/vitest-cucumber
Suggested solution: