Testing ErrorFallback Component

Subject Under Test(sut)

An error fallback component to be passed to ErrorBoundary component from react-error-boundary.

Behaviours

  1. In development mode, it shows error track trace
  2. In production mode, it hides error track trace
  3. It shows a Reset button, and clicking it calls resetErrorBoundary action passed by parent ErrorBoundary component.

Notes

  1. The renderInErrorBoundary helper method renders a bomb component inside an actual ErrorBoundary, no mocks. It shows how the sut should be used.
  2. getByText itself implicitly asserts if the element is in the document because if not found, it will throw an error. However, I asserted anyway for clarity
  3. queryByTestId is used to assert if the error stack trace is rendered in the DOM under production, it returns null if not found, contrary to getByTestId, which would throw an error when the element is not found.
  4. @epic/enviornments is mocked out to override the value to test production mode behaviour.
  5. The renderStandalone helper method renders the component as any other React component, for the sole purpose of testing the behaviour of the Reset button. Because the resetErrorBoundary is implicitly passed to the sut, and I don’t know a way to mock a React component prop yet. The test shouldn’t care about it anyway.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store