Testing in React: A Guide to Testing React Components and Applications

Sachini Dissanayaka
3 min readOct 20, 2023

Testing is a fundamental aspect of building robust and reliable applications in React. In this guide, we’ll explore testing React components and applications using popular testing tools like Jest and React Testing Library. Whether you’re a seasoned developer or just starting with React, testing is a crucial skill to have in your toolkit.

Why Testing Matters

Before we dive into the specifics of testing in React, it’s essential to understand why testing is vital:

  • Reliability: Tests ensure that your code behaves as expected, reducing the chances of bugs and regressions.
  • Maintainability: Well-tested code is easier to maintain and refactor, making it more adaptable to changes.
  • Documentation: Tests serve as living documentation, showcasing how your code should be used.
  • Confidence: Confidence in your code increases when you know it’s thoroughly tested.

Tools for Testing in React

There are several tools available for testing React applications, but two of the most popular ones are Jest and React Testing Library.

Jest

Jest is a JavaScript testing framework that is widely used for testing React applications. It provides a test runner, assertion library, and mock functionalities out of the box.

React Testing Library

React Testing Library is a testing utility to test React components. It encourages testing the components from a user’s perspective, interacting with the components as a user would.

Getting Started

To get started with testing in React, follow these steps:

1. Set up your React project

If you don’t have a React project already, you can create one using the Create React App. This will provide you with a basic React application to work with.

2. Install testing dependencies

In your project directory, install the necessary testing dependencies:

npm install --save-dev jest @testing-library/react @testing-library/jest-dom

3. Write your first test

Let’s start by writing a simple test for a React component. You can find a file named App.test.js in the same directory as your React component:

// App.js
function App() {
return (
<div>
<h1>Hello, World!</h1>
</div>
);
}

export default App;
// App.test.js
import { render, screen } from '@testing-library/react';
import App from './App';

test('renders hello world text', () => {
render(<App />);
const helloWorldElement = screen.getByText(/hello, world/i);
expect(helloWorldElement).toBeInTheDocument();
});

In this example, we’ve created a simple test that checks if the text “Hello, World!” is present in the rendered component.

4. Run your tests

You can run your tests by executing the following command:

npm test

This will start Jest, which will run your tests and provide you with the test results.

Here is what your terminal looks like.

Terminal Output

Advanced Testing

Testing in React goes beyond simple render tests. You can test various aspects, such as user interactions, component states, and asynchronous operations. Here’s a quick overview:

  • User Interactions: Simulate user interactions like clicks and form submissions to test how your components respond.
  • Component States: Test how your components behave when their state or props change.
  • Asynchronous Operations: Test asynchronous code, like API calls, using Jest’s async/await or the act function from React Testing Library.

Conclusion

Testing in React is a fundamental skill that helps you build robust and reliable applications. We’ve only scratched the surface in this guide, and there’s much more to explore, from mocking dependencies to using custom render functions.

By embracing testing and using tools like Jest and React Testing Library, you can create React applications that are not only functional but also dependable and maintainable.

I hope this guide has been a helpful starting point for your journey into testing in React. Happy testing! 😊

--

--

Sachini Dissanayaka
Sachini Dissanayaka

Written by Sachini Dissanayaka

SDE | Master's student at the University of York in Computer Science with Artificial Intelligence

No responses yet