Skip to main content

Create Test Case using Jest library in React JS

In this article, you will get an understanding of how we can create a basic Unit Test case in React JS

Creating automated test cases for a React application involves using testing libraries and frameworks like Jest and React Testing Library. For testing a LoginForm component, you would want to cover different scenarios like valid and invalid inputs, form submission, error handling, and more. Below, I'll provide an example of how to create test cases using Jest and React Testing Library.


Let's assume your LoginForm component looks something like this:

import React, { useState } from 'react';

const LoginForm = ({ onLogin }) => {
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const [error, setError] = useState('');

  const handleEmailChange = (event) => {
    setEmail(event.target.value);
  };

  const handlePasswordChange = (event) => {
    setPassword(event.target.value);
  };

  const handleSubmit = (event) => {
    event.preventDefault();

    // Basic validation
    if (!email.includes('@')) {
      setError('Invalid email address');
      return;
    }

    // Simulate login
    if (email === '[email protected]' && password === 'password123') {
      onLogin();
    } else {
      setError('Invalid credentials');
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <div>
        <label htmlFor="email">Email</label>
        <input
          type="email"
          id="email"
          value={email}
          placeholder='Email'
          onChange={handleEmailChange}
        />
      </div>
      <div>
        <label htmlFor="password">Password</label>
        <input
          type="password"
          id="password"
          value={password}
          placeholder='Password'
          onChange={handlePasswordChange}
        />
      </div>
      {error && <div>{error}</div>}
      <button type="submit">Submit</button>
    </form>
  );
};

export default LoginForm;



Now, we can write three types of test cases for that
1. Valid Input and Submission Test Case
2. Invalid Input and Submission Test Case
3. Empty Fields Test Case

before that, execute this command to install the required dependencies

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


1. Valid Input and Submission Test Case: first need to Create the
buttonValidInput.test.js

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

test('valid input and submission', () => {
  render(<LoginForm />);
 
  fireEvent.change(screen.getByPlaceholderText('Email'),
     { target: { value: 'user' } });
  fireEvent.change(screen.getByPlaceholderText('Password'),
     { target: { value: 'password' } });
  fireEvent.click(screen.getByText('Submit'));

  expect(screen.queryByText('Invalid credentials')).toBeNull();
});



2. Invalid Input and Submission Test Case: create the new file buttonInValidInput.test.js

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

test('invalid input and submission', () => {
    render(<LoginForm />);
   
    fireEvent.change(screen.getByPlaceholderText('Email'),
     { target: { value: 'invaliduser' } });
    fireEvent.change(screen.getByPlaceholderText('Password'),
     { target: { value: 'wrongpassword' } });
    fireEvent.click(screen.getByText('Submit'));
 
    expect(screen.getByText('Invalid email address')).toBeInTheDocument();
  });


3. Fields Test Case: create the new file buttonEmptyInput.test.js

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

test('empty fields submission', () => {
    render(<LoginForm />);
   
    fireEvent.click(screen.getByText('Submit'));
 
    expect(screen.getByText('Invalid email address')).toBeInTheDocument();
  });
 

Now you just need to execute the cmd

npm test

see the result



Thanks for referring to this article, hope it will help
 







Comments

Popular posts from this blog

Power Apps modern driven app Interview Question and answer

Question 1: What is a Power Apps modern driven app? Answer: A Power Apps modern driven app is a low-code/no-code application development platform provided by Microsoft. It allows users to create custom applications that can run on various devices and platforms without the need for extensive coding. These apps can be built using a visual interface and can integrate with different data sources. Question 2: What are the key components of a Power Apps modern driven app? Answer: The key components of a Power Apps modern driven app are: Screens : Screens serve as the user interface for the app and can include multiple layouts, controls, and data visualizations. Data sources : These are the various repositories where the app can retrieve and store data, such as SharePoint lists, SQL databases, Excel files, etc. Connectors : Connectors enable integration with external services and systems, allowing data to be fetched or updated. Formulas : Power Apps uses a formula language called Power Apps

Interview Questions of SPFx SharePoint

What is SPFx? The SharePoint Framework (SPFx) is a web part model that provides full support for client-side SharePoint development, it is easy to integrate with SharePoint data, and extend Microsoft Teams. With the SharePoint Framework, you can use modern web technologies and tools in your preferred development environment to build productive experiences and apps that are responsive and mobile-ready. Scenario Based asking Scenario 1: Scenario: Your team is developing a SharePoint Framework (SPFx) web part that needs to retrieve data from an external API and display it on a SharePoint site. The API requires authentication using OAuth 2.0. The web part should also allow users to refresh the data manually. Question 1: How would you approach implementing this functionality in an SPFx web

SPFX Interview question for 2023

SPFx Interview Questions for 2023 Question 1: What is SharePoint Framework (SPFx)? Answer: SharePoint Framework (SPFx) is a development model introduced by Microsoft for creating client-side web parts and extensions for SharePoint Online and SharePoint 2019. It is based on modern web technologies like JavaScript, TypeScript, and React, providing a rich and responsive user experience. Question 2: What are the key advantages of using SPFx for SharePoint development? Answer: SPFx offers several advantages, such as: Responsive and mobile-ready web parts and extensions. Seamless integration with SharePoint data and services. Support for modern web development practices and tools. Easy deployment and hosting options. Enhanced security and isolation through the SharePoint app model. Question 3: Can you explain the structure of an SPFx solution? Answer: An SPFx solution consists of the following key components: Web Parts: These are the building blocks of SPFx solutions, representing the vi