Testing React.js Applications with Jest and React Testing Library: A Comprehensive Guide

Kevin Diesenberg
2 min readMay 31, 2023

--

Writing tests for your React.js applications not only ensures your app is working as expected, but also makes you confident that your codebase is robust and maintainable. In this post, we will introduce Jest, a popular testing framework in the JavaScript ecosystem, and React Testing Library, a lightweight testing library for React components.

Setting Up the Testing Environment

Create React App comes pre-configured with Jest. If you’re not using Create React App, you can install Jest manually.

npm install --save-dev jest

You also need to install React Testing Library.

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

Writing Your First Test

Let’s write a test for a simple greeting component.

import React from 'react';

function Greeting({ name }) {
return <h1>Hello, {name}!</h1>;
}

export default Greeting;

We’ll use React Testing Library’s render function to render the component, and screen to query the rendered output.

import React from 'react';
import { render, screen } from '@testing-library/react';
import Greeting from './Greeting';

test('renders a greeting', () => {
render(<Greeting name="John" />);
const greetingElement = screen.getByText(/hello, john/i);
expect(greetingElement).toBeInTheDocument();
});

Running Tests

You can run your tests with the jest command.

npx jest

Testing User Interactions

React Testing Library provides several functions to simulate user interactions. Let’s write a test for a button that increments a counter.

import React from 'react';
import { render, screen, fireEvent } from '@testing-library/react';
import Counter from './Counter';

test('increments counter', () => {
render(<Counter />);
const button = screen.getByText('Increment');
fireEvent.click(button);
const counter = screen.getByText('Count: 1');
expect(counter).toBeInTheDocument();
});

Conclusion

Testing is a crucial aspect of software development that ensures the correctness of your code. With Jest and React Testing Library, testing React.js applications becomes easier and more enjoyable.

In the next post, we’ll look at how to integrate third-party libraries into your React.js application. Until then, happy coding!

--

--

Kevin Diesenberg
Kevin Diesenberg

Written by Kevin Diesenberg

Software Engineer | JavaScript | React | Ruby | Rails | SQL | Skydiver | Outdoor Enthusiast | Paramotor Pilot | Cyclist | Edible Mushroom Hunter

No responses yet