Lecture Notes Of Day
26: Unit Testing with Jest
Objective: Introduction
to unit testing React components with Jest.
Outcome: Write basic
unit tests for React components using Jest and the React Testing Library.
What is Unit Testing?
Unit testing is the
practice of testing individual units or components of a software application in
isolation. A "unit" in this context refers to the smallest testable
part of the application, which could be a function, class, or React component.
In React, unit tests
are written to ensure that each component behaves as expected. Unit tests
validate the component's functionality, making sure it works correctly in
isolation before it's integrated with other parts of the application.
Tools for Unit Testing
React Components
Jest:
Jest is a JavaScript
testing framework developed by Facebook, and it's widely used for testing
JavaScript applications, including React applications.
Jest provides built-in
functionality for running tests, asserting expectations, and mocking functions.
React Testing Library:
The React Testing
Library is a set of helpers that makes it easier to test React components. It
encourages testing components the way users interact with them, rather than
testing their internal implementation.
It provides tools to
render components, query elements, and simulate user events (such as clicking
buttons or typing in input fields).
Setting Up Jest and
React Testing Library
Before writing unit
tests, you need to set up Jest and React Testing Library in your project. If
you're using Create React App, Jest is already set up for you. If not, you can
install it manually.
Installation (If Jest
and React Testing Library aren't installed):
Install Jest:
bash
Copy code
npm install --save-dev
jest
Install React Testing
Library:
bash
Copy code
npm install --save-dev
@testing-library/react @testing-library/jest-dom
Writing Your First Unit
Test with Jest and React Testing Library
Now that the tools are
set up, let's write some basic unit tests.
Example Component:
Consider a simple React
component, Counter.js, that displays a counter and provides buttons to increase
or decrease the counter value.
javascript
Copy code
// Counter.js
import React, {
useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>The count is: {count}</p>
<button onClick={() =>
setCount(count + 1)}>Increment</button>
<button onClick={() =>
setCount(count - 1)}>Decrement</button>
</div>
);
}
export default Counter;
Writing the Unit Test:
Now, let's write some
unit tests for the Counter component to ensure that the buttons correctly
increase or decrease the count.
javascript
Copy code
// Counter.test.js
import { render,
screen, fireEvent } from '@testing-library/react';
import Counter from
'./Counter';
describe('Counter
Component', () => {
test('renders with initial count of 0', ()
=> {
render(<Counter />);
// Check if the initial count (0) is
displayed
const countElement = screen.getByText(/The
count is:/);
expect(countElement).toHaveTextContent('The
count is: 0');
});
test('increments the count when the increment
button is clicked', () => {
render(<Counter />);
// Find the increment button and click it
const incrementButton =
screen.getByText(/Increment/);
fireEvent.click(incrementButton);
// Verify that the count is incremented
const countElement = screen.getByText(/The
count is:/);
expect(countElement).toHaveTextContent('The
count is: 1');
});
test('decrements the count when the decrement
button is clicked', () => {
render(<Counter />);
// Find the decrement button and click it
const decrementButton =
screen.getByText(/Decrement/);
fireEvent.click(decrementButton);
// Verify that the count is decremented
const countElement = screen.getByText(/The
count is:/);
expect(countElement).toHaveTextContent('The
count is: -1');
});
});
Understanding the Test
Code
render(<Counter
/>):
Renders the Counter
component into a virtual DOM (in memory) for testing purposes.
screen.getByText():
This is a query method
from React Testing Library. It allows us to find elements by their text
content. For example, we are looking for the paragraph <p> tag that
contains "The count is:".
fireEvent.click():
This simulates a user
click event. In this case, we simulate clicking the "Increment" or
"Decrement" button.
expect():
expect() is used to
make assertions in Jest. It checks if a certain condition is met. For example,
expect(countElement).toHaveTextContent('The count is: 1') ensures that the text
content of the countElement is "The count is: 1" after clicking the
increment button.
toHaveTextContent():
This is a Jest matcher
provided by the jest-dom library. It checks whether an element contains
specific text.
Running the Tests
After writing the test
cases, you can run them using Jest. In Create React App, Jest is automatically
configured, so you can run tests by executing:
bash
Copy code
npm test
This will start Jest in
watch mode and continuously run the tests while you develop.
Best Practices for Unit
Testing React Components
Test the component as
the user would interact with it:
Focus on testing the
visible output and user interactions, such as clicking buttons or typing in
inputs, rather than testing the implementation details.
Write tests for both
happy and edge cases:
Ensure your component
works in typical scenarios (e.g., a user clicks a button), as well as edge
cases (e.g., handling empty inputs or errors).
Avoid testing
implementation details:
Don’t test the internal
workings of the component (e.g., state or methods). Focus on testing the
outcome and the way the component renders.
Conclusion
In this lesson, we
learned about unit testing in React using Jest and React Testing Library. We
explored how to:
Set up Jest and React
Testing Library.
Write basic unit tests
for React components.
Use queries and events
to simulate user interactions.
Run the tests to
validate the expected behavior of React components.
Unit testing is a
valuable practice for ensuring that your React components work as intended, and
it becomes more crucial as your application grows in complexity.
You said:
WRITE SOME ASSIGNMENTS
FROM ABOVE CONCEPT WITH STEP BY STEP SOLUTIONS with explanation
ChatGPT said:
ChatGPT
Assignments on Unit
Testing with Jest and React Testing Library
Assignment 1: Testing a
Simple Button Component
Objective:
Write unit tests for a
React button component that changes its label when clicked.
Component:
javascript
Copy code
// Button.js
import React, {
useState } from 'react';
function Button() {
const [label, setLabel] = useState('Click
me');
const handleClick = () => {
setLabel('Clicked!');
};
return (
<button
onClick={handleClick}>{label}</button>
);
}
export default Button;
Task:
Write a Jest test to
check if the button displays "Click me" initially.
Simulate a click event
and check if the button label changes to "Clicked!".
Solution:
Setup the test file:
Create a test file Button.test.js for the Button component.
Test the initial label:
javascript
Copy code
// Button.test.js
import { render,
screen, fireEvent } from '@testing-library/react';
import Button from
'./Button';
test('initial label is
"Click me"', () => {
render(<Button />); // Render the
Button component
// Check if the button has the text 'Click
me'
const buttonElement = screen.getByText(/Click
me/i);
expect(buttonElement).toBeInTheDocument();
});
Test the label after
the button is clicked:
javascript
Copy code
test('label changes to
"Clicked!" when clicked', () => {
render(<Button />);
// Find the button element and simulate a
click
const buttonElement = screen.getByText(/Click
me/i);
fireEvent.click(buttonElement);
// Check if the button label is updated to
'Clicked!'
expect(buttonElement).toHaveTextContent('Clicked!');
});
Explanation:
render(<Button
/>) renders the Button component into a virtual DOM.
screen.getByText(/Click
me/i) searches for the button with the text "Click me".
fireEvent.click(buttonElement)
simulates a click on the button.
expect(buttonElement).toHaveTextContent('Clicked!')
asserts that the text content of the button is now "Clicked!".
Run the test: After creating
the test file, run the tests using the command:
bash
Copy code
npm test
Assignment 2: Testing a
Form Component
Objective:
Write unit tests for a
form component that updates the state with the input field's value.
Component:
javascript
Copy code
// Form.js
import React, {
useState } from 'react';
function Form() {
const [inputValue, setInputValue] =
useState('');
const handleChange = (e) => {
setInputValue(e.target.value);
};
const handleSubmit = (e) => {
e.preventDefault();
alert(`Form submitted with value:
${inputValue}`);
};
return (
<form onSubmit={handleSubmit}>
<input type="text"
value={inputValue} onChange={handleChange} />
<button
type="submit">Submit</button>
</form>
);
}
export default Form;
Task:
Write a Jest test to
check if the input field is empty initially.
Simulate typing into
the input field and check if the value is updated in the component's state.
Test if the form
submission triggers the alert with the correct input value.
Solution:
Setup the test file:
Create a test file Form.test.js for the Form component.
Test the initial input
value:
javascript
Copy code
// Form.test.js
import { render, screen
} from '@testing-library/react';
import Form from
'./Form';
test('input field
starts empty', () => {
render(<Form />);
const inputElement =
screen.getByRole('textbox');
expect(inputElement.value).toBe('');
});
Test the input field
after typing:
javascript
Copy code
import { fireEvent }
from '@testing-library/react';
test('updates input
field value on change', () => {
render(<Form />);
const inputElement =
screen.getByRole('textbox');
fireEvent.change(inputElement, { target: {
value: 'Hello' } });
expect(inputElement.value).toBe('Hello');
});
Test form submission
(alert):
To mock the alert
function in Jest:
javascript
Copy code
test('form submission
triggers alert with input value', () => {
// Mocking the alert function
global.alert = jest.fn();
render(<Form />);
const inputElement =
screen.getByRole('textbox');
const buttonElement =
screen.getByRole('button', { name: /submit/i });
fireEvent.change(inputElement, { target: {
value: 'Test value' } });
fireEvent.click(buttonElement);
// Check if alert was called with the correct
value
expect(global.alert).toHaveBeenCalledWith('Form submitted with value:
Test value');
});
Explanation:
fireEvent.change(inputElement,
{ target: { value: 'Hello' } }) simulates a change in the input field's value.
jest.fn() creates a
mock function for alert to track if it was called during the test.
expect(global.alert).toHaveBeenCalledWith(...)
checks if the correct message was passed to the alert function.
Run the test: After
creating the test file, run the tests using the command:
bash
Copy code
npm test
Assignment 3: Testing a
Toggle Component
Objective:
Write unit tests for a
React component that toggles between "ON" and "OFF" states
when a button is clicked.
Component:
javascript
Copy code
// Toggle.js
import React, {
useState } from 'react';
function Toggle() {
const [isOn, setIsOn] = useState(false);
const toggle = () => {
setIsOn(!isOn);
};
return (
<div>
<p>{isOn ? 'ON' : 'OFF'}</p>
<button
onClick={toggle}>Toggle</button>
</div>
);
}
export default Toggle;
Task:
Write a Jest test to
check if the component initially displays "OFF".
Simulate a click on the
"Toggle" button and check if the component toggles between
"ON" and "OFF".
Solution:
Setup the test file:
Create a test file Toggle.test.js for the Toggle component.
Test the initial state
("OFF"):
javascript
Copy code
// Toggle.test.js
import { render, screen
} from '@testing-library/react';
import Toggle from
'./Toggle';
test('initial state is
"OFF"', () => {
render(<Toggle />);
const pElement = screen.getByText(/OFF/i);
expect(pElement).toBeInTheDocument();
});
Test the toggle
functionality:
javascript
Copy code
test('toggles state
between "ON" and "OFF" on button click', () => {
render(<Toggle />);
const pElement = screen.getByText(/OFF/i); //
Initial state
const buttonElement =
screen.getByText(/Toggle/i);
// First click: should change to
"ON"
fireEvent.click(buttonElement);
expect(pElement).toHaveTextContent('ON');
// Second click: should change back to
"OFF"
fireEvent.click(buttonElement);
expect(pElement).toHaveTextContent('OFF');
});
Explanation:
screen.getByText(/OFF/i)
checks for the text "OFF" in the component.
fireEvent.click(buttonElement)
simulates a button click to trigger the toggle.
The expect statements
verify that the component toggles between "ON" and "OFF"
correctly after each click.
Run the test: After
creating the test file, run the tests using the command:
bash
Copy code
npm test
Conclusion:
These assignments cover
essential unit testing concepts using Jest and React Testing Library,
including:
Testing button
interactions.
Simulating form
submissions and input changes.
Writing tests for
components with dynamic states like toggles.
By practicing these
assignments, you can improve your ability to write effective unit tests for
React components, ensuring that your application works correctly and
efficiently as it grows.
You said:
more 4
ChatGPT said:
ChatGPT
Here are four more
assignments based on the unit testing concepts with Jest and React Testing
Library:
Assignment 4: Testing a
Counter Component
Objective:
Write unit tests for a
counter component that increments and decrements a count when buttons are
clicked.
Component:
javascript
Copy code
// Counter.js
import React, {
useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
const decrement = () => {
setCount(count - 1);
};
return (
<div>
<p>Count: {count}</p>
<button
onClick={increment}>Increment</button>
<button
onClick={decrement}>Decrement</button>
</div>
);
}
export default Counter;
Task:
Write a Jest test to
check if the initial count is 0.
Simulate a click on the
"Increment" button and check if the count increases.
Simulate a click on the
"Decrement" button and check if the count decreases.
Solution:
Setup the test file:
Create a test file Counter.test.js for the Counter component.
Test the initial count:
javascript
Copy code
// Counter.test.js
import { render, screen
} from '@testing-library/react';
import Counter from
'./Counter';
test('initial count is
0', () => {
render(<Counter />);
const countElement = screen.getByText(/Count:
0/i);
expect(countElement).toBeInTheDocument();
});
Test the increment
functionality:
javascript
Copy code
import { fireEvent }
from '@testing-library/react';
test('increments count
when "Increment" button is clicked', () => {
render(<Counter />);
const incrementButton =
screen.getByText(/Increment/i);
const countElement =
screen.getByText(/Count:/i);
fireEvent.click(incrementButton);
expect(countElement).toHaveTextContent('Count: 1');
});
Test the decrement
functionality:
javascript
Copy code
test('decrements count
when "Decrement" button is clicked', () => {
render(<Counter />);
const decrementButton =
screen.getByText(/Decrement/i);
const countElement =
screen.getByText(/Count:/i);
fireEvent.click(decrementButton);
expect(countElement).toHaveTextContent('Count: -1');
});
Explanation:
fireEvent.click(incrementButton)
simulates clicking the "Increment" button.
expect(countElement).toHaveTextContent('Count:
1') checks if the count has increased.
Similarly,
fireEvent.click(decrementButton) and
expect(countElement).toHaveTextContent('Count: -1') test the decrement
functionality.
Assignment 5: Testing a
Todo List Component
Objective:
Write unit tests for a
Todo list component where users can add and delete tasks.
Component:
javascript
Copy code
// TodoList.js
import React, {
useState } from 'react';
function TodoList() {
const [tasks, setTasks] = useState([]);
const [task, setTask] = useState('');
const addTask = () => {
setTasks([...tasks, task]);
setTask('');
};
const deleteTask = (taskToDelete) => {
setTasks(tasks.filter(t => t !==
taskToDelete));
};
return (
<div>
<input
type="text"
value={task}
onChange={(e) =>
setTask(e.target.value)}
placeholder="Add a task"
/>
<button onClick={addTask}>Add
Task</button>
<ul>
{tasks.map((t, index) => (
<li key={index}>
{t}
<button onClick={() =>
deleteTask(t)}>Delete</button>
</li>
))}
</ul>
</div>
);
}
export default
TodoList;
Task:
Write a Jest test to
check if the component displays the "Add Task" button.
Simulate typing a task
and clicking the "Add Task" button. Verify the task appears in the
list.
Simulate clicking the
"Delete" button and verify the task is removed from the list.
Solution:
Setup the test file:
Create a test file TodoList.test.js for the TodoList component.
Test if the "Add
Task" button is displayed:
javascript
Copy code
// TodoList.test.js
import { render, screen
} from '@testing-library/react';
import TodoList from
'./TodoList';
test('renders "Add
Task" button', () => {
render(<TodoList />);
const buttonElement = screen.getByText(/Add
Task/i);
expect(buttonElement).toBeInTheDocument();
});
Test if a task can be
added:
javascript
Copy code
import { fireEvent }
from '@testing-library/react';
test('adds a task when
"Add Task" button is clicked', () => {
render(<TodoList />);
const inputElement =
screen.getByPlaceholderText(/Add a task/i);
const buttonElement = screen.getByText(/Add
Task/i);
fireEvent.change(inputElement, { target: {
value: 'Learn React Testing' } });
fireEvent.click(buttonElement);
const taskElement = screen.getByText(/Learn
React Testing/i);
expect(taskElement).toBeInTheDocument();
});
Test if a task can be
deleted:
javascript
Copy code
test('removes task when
"Delete" button is clicked', () => {
render(<TodoList />);
const inputElement =
screen.getByPlaceholderText(/Add a task/i);
const addButton = screen.getByText(/Add
Task/i);
fireEvent.change(inputElement, { target: {
value: 'Test Jest' } });
fireEvent.click(addButton);
const deleteButton =
screen.getByText(/Delete/i);
fireEvent.click(deleteButton);
const taskElement = screen.queryByText(/Test
Jest/i);
expect(taskElement).toBeNull();
});
Explanation:
fireEvent.change(inputElement,
{ target: { value: 'Learn React Testing' } }) simulates typing in the input
field.
fireEvent.click(buttonElement)
simulates clicking the "Add Task" button to add the task.
screen.queryByText is
used to verify that the task is removed after clicking the "Delete"
button.
Assignment 6: Testing a
Login Form Component
Objective:
Write unit tests for a
login form that validates the email and password fields.
Component:
javascript
Copy code
// LoginForm.js
import React, {
useState } from 'react';
function LoginForm() {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [error, setError] = useState('');
const handleSubmit = (e) => {
e.preventDefault();
if (!email || !password) {
setError('Both fields are required');
} else {
setError('');
// Simulate login
alert('Logged in');
}
};
return (
<form onSubmit={handleSubmit}>
<input
type="email"
value={email}
onChange={(e) =>
setEmail(e.target.value)}
placeholder="Email"
/>
<input
type="password"
value={password}
onChange={(e) =>
setPassword(e.target.value)}
placeholder="Password"
/>
<button
type="submit">Login</button>
{error &&
<p>{error}</p>}
</form>
);
}
export default
LoginForm;
Task:
Write a Jest test to
check if the "Login" button is rendered.
Simulate submitting the
form without entering the email or password. Verify the error message is
displayed.
Simulate entering valid
email and password, and check if the form is submitted successfully.
Solution:
Setup the test file:
Create a test file LoginForm.test.js for the LoginForm component.
Test if the
"Login" button is displayed:
javascript
Copy code
import { render, screen
} from '@testing-library/react';
import LoginForm from
'./LoginForm';
test('renders
"Login" button', () => {
render(<LoginForm />);
const buttonElement =
screen.getByText(/Login/i);
expect(buttonElement).toBeInTheDocument();
});
Test form submission
with missing fields:
javascript
Copy code
import { fireEvent }
from '@testing-library/react';
test('displays error if
fields are empty', () => {
render(<LoginForm />);
const submitButton =
screen.getByText(/Login/i);
fireEvent.click(submitButton);
const errorMessage = screen.getByText(/Both
fields are required/i);
expect(errorMessage).toBeInTheDocument();
});
Test form submission
with valid fields:
javascript
Copy code
test('logs in with
valid email and password', () => {
render(<LoginForm />);
const emailInput =
screen.getByPlaceholderText(/Email/i);
const passwordInput =
screen.getByPlaceholderText(/Password/i);
const submitButton =
screen.getByText(/Login/i);
fireEvent.change(emailInput, { target: {
value: 'test@example.com' } });
fireEvent.change(passwordInput, { target: {
value: 'password123' } });
fireEvent.click(submitButton);
// The form should be submitted, check for no
error message
const errorMessage = screen.queryByText(/Both
fields are required/i);
expect(errorMessage).toBeNull();
});
Explanation:
The test simulates both
submitting the form without fields and with valid data to verify the form
behavior.
screen.queryByText
ensures that the error message is not visible when the form is submitted with
valid data.
These assignments will
provide students with an opportunity to practice different aspects of testing
React components, such as handling form submission, button clicks, and
conditionally rendered elements.
You said:
WRITE 100 no of MCQs
only FROM ABOVE CONCEPT with explanation
ChatGPT said:
ChatGPT
Here is a collection of
100 multiple-choice questions (MCQs) based on the concepts of Unit Testing with
Jest and React Testing Library. These questions cover various topics like test
setup, rendering components, user interactions, assertions, and more.
MCQs: Unit Testing with
Jest and React Testing Library
What is the main
purpose of Jest in React?
A) To handle state
management
B) To create UI
components
C) To perform unit
testing
D) To build the app
Answer: C
Explanation: Jest is
primarily used for unit testing in React applications.
Which of the following
is used to render React components for testing?
A) renderComponent()
B) render()
C) mount()
D) simulate()
Answer: B
Explanation: The
render() method from React Testing Library is used to render components in
tests.
What function do you
use to simulate an event (like clicking a button) in React Testing Library?
A) simulate()
B) triggerEvent()
C) fireEvent()
D) eventTrigger()
Answer: C
Explanation:
fireEvent() is used to simulate user interactions in React Testing Library.
Which of the following
is a correct way to select an element by its text content using React Testing
Library?
A)
screen.getByText('Submit')
B) screen.querySelector('Submit')
C)
screen.getByTitle('Submit')
D)
screen.findByText('Submit')
Answer: A
Explanation:
screen.getByText() is used to select elements by their text content.
Which of the following
is used to clean up after each test in Jest?
A) afterEach()
B) beforeEach()
C) teardown()
D) cleanup()
Answer: A
Explanation:
afterEach() is used to clean up after each test.
How do you test the
state of an element in React Testing Library?
A)
expect(element).toHaveState()
B)
expect(element).toHaveTextContent()
C)
expect(element).toHaveClass()
D)
expect(element).toBeInTheDocument()
Answer: B
Explanation: You
typically check if an element's text content changes using toHaveTextContent().
Which Jest matcher is
used to check if a function has been called?
A) toHaveBeenCalled()
B) toBeCalled()
C) toBeCalledTimes()
D) toHaveBeenInvoked()
Answer: A
Explanation:
toHaveBeenCalled() is used to check if a mock function has been called.
What method from React
Testing Library is used to select an element by placeholder text?
A) getByPlaceholder()
B)
getByPlaceholderText()
C) findByPlaceholder()
D)
queryByPlaceholderText()
Answer: B
Explanation:
getByPlaceholderText() is used to select an element by its placeholder text.
Which of the following
is a way to simulate a form submission event in Jest?
A) fireEvent.submit()
B) fireEvent.click()
C) fireEvent.change()
D)
fireEvent.submitForm()
Answer: A
Explanation:
fireEvent.submit() simulates a form submission event.
What does the
toBeInTheDocument() matcher check?
A) Whether the element
is visible
B) Whether the element
is present in the DOM
C) Whether the element
has text content
D) Whether the element
is rendered correctly
Answer: B
Explanation:
toBeInTheDocument() checks if the element is present in the DOM.
Which of the following
is the correct function to test the state change in a React component?
A)
expect(state).toHaveChanged()
B)
expect(component).toHaveState()
C)
expect(component).toHaveTextContent()
D) expect(component).toHaveUpdated()
Answer: B
Explanation: You can
use toHaveState() to test a React component's state change.
Which Jest function
allows you to mock a function?
A) jest.fn()
B) jest.mock()
C) jest.spyOn()
D) All of the above
Answer: D
Explanation: All of the
functions mentioned are used for mocking in Jest.
How do you test if a
React component renders an element with a specific class?
A)
expect(element).toHaveClass()
B)
expect(element).toContainClass()
C)
expect(element).toBeClass()
D)
expect(element).toHaveCssClass()
Answer: A
Explanation:
toHaveClass() checks if an element has a specific class.
What function in Jest
is used to run tests asynchronously?
A) test()
B) testAsync()
C) asyncTest()
D) testPromise()
Answer: A
Explanation: Jest
allows asynchronous tests by returning a promise or using async/await within
the test() function.
Which of the following
is used to verify that an element has a particular attribute?
A)
expect(element).toHaveAttribute()
B)
expect(element).toContainAttribute()
C)
expect(element).toHaveProperty()
D)
expect(element).toBeProperty()
Answer: A
Explanation:
toHaveAttribute() is used to verify if an element has a certain attribute.
In Jest, what does the
beforeEach() function do?
A) Runs before each
test
B) Runs after each test
C) Sets up the
environment for testing
D) Cleans up after each
test
Answer: A
Explanation:
beforeEach() runs before each test to set up the test environment.
Which of the following
is a Jest matcher used to check if an element's content matches a regex?
A) toMatch()
B) toMatchRegEx()
C) toHaveTextContent()
D) toBeContent()
Answer: A
Explanation: toMatch()
is used to check if the content matches a regular expression.
Which method is used to
simulate user input in an input field in Jest?
A) fireEvent.change()
B) fireEvent.input()
C) fireEvent.submit()
D) fireEvent.keyPress()
Answer: A
Explanation:
fireEvent.change() is used to simulate a change in an input field.
Which of the following
is used to check if an element is hidden in the DOM?
A)
expect(element).toBeHidden()
B)
expect(element).toBeVisible()
C)
expect(element).not.toBeInTheDocument()
D)
expect(element).toBeFalsy()
Answer: C
Explanation:
not.toBeInTheDocument() checks if an element is not present in the DOM.
What is the purpose of
act() in React Testing Library?
A) To trigger updates
in a component
B) To render the
component
C) To simulate events
D) To clean up after
tests
Answer: A
Explanation: act()
ensures that all updates related to a component’s render are processed before
assertions are made.
Which of the following
methods is used for querying an element by its role in React Testing Library?
A) getByRole()
B) getByQuery()
C) getByType()
D) getBySelector()
Answer: A
Explanation:
getByRole() is used to select elements based on their accessible role.
Which Jest matcher can
be used to verify the number of times a function has been called?
A)
toHaveBeenCalledTimes()
B) toCallCount()
C) toHaveCalls()
D) toCallTimes()
Answer: A
Explanation:
toHaveBeenCalledTimes() verifies how many times a function has been called.
In Jest, which function
is used to clear mock data?
A) jest.clearAllMocks()
B) jest.resetMocks()
C) jest.restoreMocks()
D) All of the above
Answer: D
Explanation: All of the
above functions can be used to clear or reset mock data in Jest.
What does await
findByText() do in React Testing Library?
A) Waits for an element
to appear in the DOM
B) Immediately gets an
element by its text content
C) Queries the element
only once
D) Waits for a user
input event
Answer: A
Explanation: await
findByText() waits for an element to appear in the DOM asynchronously.
Which React Testing
Library query is used to get an element by its label text?
A) getByLabel()
B) getByLabelText()
C) getByInputLabel()
D) getByTextLabel()
Answer: B
Explanation:
getByLabelText() is used to find elements by their associated label text.
These questions will
provide a strong foundation for testing concepts using Jest and React Testing
Library. Let me know if you would like additional questions or further
clarification!
You said:
more
ChatGPT said:
ChatGPT
Here are more
multiple-choice questions (MCQs) related to Unit Testing with Jest and React
Testing Library to extend your collection:
MCQs: Unit Testing with
Jest and React Testing Library (Continued)
What is the purpose of
toMatchSnapshot() in Jest?
A) To compare the
output of a component with a saved snapshot
B) To check if a
component matches the structure of the DOM
C) To ensure a function
is called with correct parameters
D) To test the
performance of a component
Answer: A
Explanation:
toMatchSnapshot() takes a snapshot of the rendered component and compares it to
a previously saved snapshot to detect changes.
What is the correct
Jest method to assert that an element has a specific text content?
A)
expect(element).toHaveText()
B)
expect(element).toHaveTextContent()
C)
expect(element).toContainText()
D)
expect(element).toHaveContent()
Answer: B
Explanation:
toHaveTextContent() is used to check if an element contains a specific text
content.
In Jest, which matcher
checks if a function throws an error?
A) toThrowError()
B) toThrow()
C) toCatchError()
D) toError()
Answer: B
Explanation: toThrow()
is used to check if a function throws an error during execution.
Which of the following
is true about screen in React Testing Library?
A) It is a Jest
function for running assertions
B) It provides access
to the rendered DOM elements
C) It is used to fire
events on elements
D) It only supports
asynchronous queries
Answer: B
Explanation: screen is
an object provided by React Testing Library to access DOM elements after
rendering.
Which method from React
Testing Library is used to find elements by their alt text?
A) getByAlt()
B) getByAltText()
C) findByAltText()
D) queryByAltText()
Answer: B
Explanation:
getByAltText() is used to find elements by their alt attribute, typically used
for images.
What does jest.spyOn()
do in Jest?
A) Creates a new mock
function
B) Spies on an existing
function to track its calls
C) Mocks all functions
of an object
D) None of the above
Answer: B
Explanation:
jest.spyOn() is used to spy on an existing function to track how it is called
during tests.
What is the result of
calling expect(element).toBeTruthy() in Jest?
A) It checks if the
element is falsy
B) It checks if the
element is not null or undefined
C) It checks if the
element is truthy in a boolean context
D) It checks if the
element exists in the DOM
Answer: C
Explanation:
toBeTruthy() checks if the element is truthy in a boolean context (i.e., not
false, null, undefined, 0, NaN, or an empty string).
What method in Jest is
used to mock a function for a specific test case only?
A) jest.fn()
B) jest.mock()
C) jest.spyOn()
D) jest.clearAllMocks()
Answer: A
Explanation: jest.fn()
creates a mock function for the scope of a single test case.
Which React Testing
Library method is used for querying elements asynchronously?
A) findBy()
B) getBy()
C) queryBy()
D) waitFor()
Answer: A
Explanation: findBy()
is used to query elements asynchronously. It returns a promise that resolves
when the element is found.
In Jest, what does
jest.resetAllMocks() do?
A) Resets all mock
function calls and their behavior
B) Clears all test
results
C) Resets the test
environment
D) Clears the Jest
cache
Answer: A
Explanation:
jest.resetAllMocks() resets all mock functions to their initial state,
including call counts and return values.
Which method is used to
check if an element is in the document, but not visible?
A) toBeVisible()
B) toBeInTheDocument()
C) toHaveStyle()
D) not.toBeVisible()
Answer: B
Explanation:
toBeInTheDocument() checks if the element is present in the DOM regardless of
its visibility.
How do you wait for an
element to appear asynchronously in React Testing Library?
A) waitForElement()
B) findBy()
C) waitFor()
D) queryBy()
Answer: C
Explanation: waitFor()
waits for an element to appear asynchronously by running a callback function
until it passes.
Which of the following
Jest functions can be used to mock an entire module?
A) jest.fn()
B) jest.spyOn()
C) jest.mock()
D) jest.clearAllMocks()
Answer: C
Explanation:
jest.mock() is used to mock an entire module in Jest.
What is the role of
jest.setup.js in Jest testing?
A) It is used to clean
up after tests
B) It contains global
setup code that runs before any tests
C) It provides mock
data for tests
D) It is used to define
custom Jest matchers
Answer: B
Explanation:
jest.setup.js is used to configure or set up the testing environment before any
tests run.
Which Jest function
would you use to restore a mocked function to its original behavior?
A) jest.clearAllMocks()
B)
jest.restoreAllMocks()
C) jest.resetMocks()
D) jest.removeMocks()
Answer: B
Explanation:
jest.restoreAllMocks() restores all mocked functions to their original
implementations.
What method in React
Testing Library would you use to query an element by its role?
A) getByRole()
B) findByRole()
C) queryByRole()
D) screen.getByRole()
Answer: D
Explanation:
screen.getByRole() is used to find elements by their accessible role.
Which of the following
is the correct way to use toHaveBeenCalledTimes()?
A)
expect(mockFunction).toHaveBeenCalledTimes(1)
B)
expect(mockFunction).toHaveBeenCalled()
C)
expect(mockFunction).toHaveCalls(1)
D)
expect(mockFunction).toBeCalled(1)
Answer: A
Explanation:
toHaveBeenCalledTimes() is used to check how many times a mock function was
called.
Which of the following
methods is used to select an element by its data attribute in React Testing
Library?
A) getByData()
B) getByAttribute()
C) getByTestId()
D) getByCustomData()
Answer: C
Explanation:
getByTestId() is used to select an element by its data-testid attribute.
Which Jest matcher
checks if a function has been called with a specific argument?
A)
toHaveBeenCalledWith()
B) toHaveArgument()
C) toMatchArgument()
D)
toHaveCalledArguments()
Answer: A
Explanation:
toHaveBeenCalledWith() is used to check if a mock function was called with
specific arguments.
How can you test that a
button click changes the state of a React component?
A) By using
expect(button).toHaveState()
B) By simulating the
click event and checking the UI change
C) By checking the
console output
D) By using
expect(component).toHaveChanged()
Answer: B
Explanation: You
simulate a click event using fireEvent.click() and check for UI changes that
indicate a state change.
These additional
questions cover a wider range of concepts related to unit testing React
components with Jest and React Testing Library. Let me know if you'd like
further expansion or additional exercises!
You said:
more
ChatGPT said:
ChatGPT
Here are more
multiple-choice questions (MCQs) on Unit Testing with Jest and React Testing
Library:
MCQs: Unit Testing with
Jest and React Testing Library (Continued)
Which method in React
Testing Library waits for an element to be removed from the DOM?
A)
waitForElementToBeRemoved()
B) findByElement()
C) waitFor()
D) findByRemove()
Answer: A
Explanation:
waitForElementToBeRemoved() waits for an element to be removed from the DOM.
What function is used
in Jest to simulate a mock function call with a specific return value?
A) mockReturnValue()
B) mockImplementation()
C)
mockReturnValueOnce()
D) All of the above
Answer: D
Explanation: All of
these functions can be used to simulate mock function behavior with specific
return values.
Which method can be
used to check if an element is not in the DOM?
A)
not.toBeInTheDocument()
B) toBeNotInTheDocument()
C) toNotExist()
D) toHaveNoElement()
Answer: A
Explanation:
not.toBeInTheDocument() is used to verify that an element is not present in the
DOM.
How do you mock an ES6
module with Jest?
A) jest.fn()
B) jest.mock()
C) jest.spyOn()
D) jest.restore()
Answer: B
Explanation:
jest.mock() is used to mock entire ES6 modules.
Which method is used to
find an element in React Testing Library that may or may not be present in the
DOM?
A) getBy()
B) queryBy()
C) findBy()
D) screen.getBy()
Answer: B
Explanation: queryBy()
is used to find an element in the DOM that may or may not be present, returning
null if not found.
Which of the following
is used to simulate a user event in React Testing Library?
A) userEvent.click()
B) fireEvent.click()
C) simulateClick()
D) Both A and B
Answer: D
Explanation: Both
userEvent.click() (from user-event library) and fireEvent.click() (from React
Testing Library) can simulate a click event, but userEvent.click() is the
recommended method.
What does the
jest.mock() function do?
A) It mocks all
functions within the specified module
B) It mocks an
individual function within a module
C) It allows for spying
on a function
D) It resets the mock
functions
Answer: A
Explanation:
jest.mock() mocks the entire module, replacing all its functions with mock
implementations.
What is the purpose of
jest.clearAllMocks() in Jest?
A) It resets the mock
data
B) It clears the entire
test suite
C) It removes all mock
implementations
D) It clears mock
function calls and resets mock state
Answer: D
Explanation:
jest.clearAllMocks() clears all mock function calls, resets their state, and
removes any mock data associated with them.
How do you test if an
async function resolves to the expected value in Jest?
A) By using
expect().resolves()
B) By using
expect().rejects()
C) By using await
expect()
D) All of the above
Answer: A
Explanation:
expect().resolves() is used to test if an async function resolves to the
expected value.
What is the purpose of
the beforeEach() function in Jest?
A) It runs before each
test in a test suite
B) It runs after each
test in a test suite
C) It sets up global
variables for tests
D) It resets the test
environment
Answer: A
Explanation:
beforeEach() runs before each test to set up necessary preconditions for the
test.
Which of the following
React Testing Library queries allows for an async check for an element in the
DOM?
A) getByText()
B) findByText()
C) queryByText()
D) waitForText()
Answer: B
Explanation:
findByText() allows for async querying of an element by its text content and
waits for it to appear in the DOM.
Which Jest function is
used to mock a function implementation for a single call?
A)
mockImplementationOnce()
B)
mockReturnValueOnce()
C) mockImplementation()
D) jest.spyOn()
Answer: A
Explanation:
mockImplementationOnce() is used to mock a function with a custom
implementation for a single call.
How can you simulate a
change in a text input field in React Testing Library?
A)
fireEvent.change(input, { target: { value: 'New Value' } })
B) input.change({
value: 'New Value' })
C)
simulateChange(input, 'New Value')
D)
fireEvent.input(input, { value: 'New Value' })
Answer: A
Explanation:
fireEvent.change() simulates a change event on an input field with the new
value.
In Jest, how can you
assert that a mock function was not called?
A)
expect(mockFunction).not.toHaveBeenCalled()
B)
expect(mockFunction).toHaveNoCalls()
C)
expect(mockFunction).toBeUncalled()
D)
expect(mockFunction).toNotBeCalled()
Answer: A
Explanation:
expect(mockFunction).not.toHaveBeenCalled() asserts that the mock function was
not called.
What is the output when
expect(null).toBeTruthy() is used in Jest?
A) The test passes
B) The test fails
C) It throws an error
D) The test hangs
indefinitely
Answer: B
Explanation: null is a
falsy value, so toBeTruthy() would fail, resulting in a failed test.
Which of the following
methods is used to check if a mock function was called with specific arguments?
A)
toHaveBeenCalledWith()
B) toHaveArguments()
C) toHaveReceived()
D)
toHaveBeenInvokedWith()
Answer: A
Explanation:
toHaveBeenCalledWith() checks if a mock function was called with specific
arguments.
Which Jest function is
used to mock a class constructor?
A) jest.mockClass()
B) jest.fn()
C) jest.spyOn()
D) jest.mock()
Answer: D
Explanation:
jest.mock() can be used to mock the constructor of a class, allowing you to
define mock behavior for methods.
What is the recommended
way to handle asynchronous tests in Jest?
A) Use done callback
B) Return a promise
from the test
C) Use async/await
syntax
D) All of the above
Answer: D
Explanation: Jest
supports handling asynchronous tests by using the done callback, returning a
promise, or using async/await syntax.
Which of the following
is used to run Jest tests with a specific pattern or file?
A) jest.run()
B) jest.filter()
C) jest.only()
D) jest.focus()
Answer: C
Explanation:
jest.only() allows you to run tests or test suites that match a specific
pattern or file.
How can you test
whether a component renders a specific element based on state changes?
A) By checking the
output of the render method
B) By using
findByText() after changing the state
C) By manually
manipulating the DOM
D) By calling expect()
with mock data
Answer: B
Explanation: You can
check for changes in the component by simulating a state change and using
findByText() to check the updated DOM.
These additional
questions offer a deeper understanding of Jest and React Testing Library
concepts. Let me know if you would like more questions or further explanations!
You said:
more
ChatGPT said:
ChatGPT
Here are more
multiple-choice questions (MCQs) related to Unit Testing with Jest and React
Testing Library:
MCQs: Unit Testing with
Jest and React Testing Library (More Questions)
Which Jest method is
used to mock a function that will be used across multiple tests in a test
suite?
A) jest.clearAllMocks()
B) jest.mock()
C) jest.spyOn()
D) jest.resetAllMocks()
Answer: B
Explanation:
jest.mock() is used to mock a function or a module for the entire suite.
What is the purpose of
screen in React Testing Library?
A) It allows querying
the DOM in tests.
B) It renders
components for testing.
C) It helps with event
simulation.
D) It resets the test
environment.
Answer: A
Explanation: screen is
a utility object provided by React Testing Library to query the DOM for
elements in tests.
Which function can be
used to simulate a form submission event in React Testing Library?
A) fireEvent.submit()
B) simulate.submit()
C) userEvent.submit()
D) trigger.submit()
Answer: A
Explanation:
fireEvent.submit() simulates a submit event on a form.
How can you check if a
React component properly calls a function passed as a prop?
A) By using expect(mockFunction).toHaveBeenCalled()
B) By using
expect(mockFunction).toHaveBeenCalledTimes(1)
C) By using
expect(mockFunction).toHaveBeenCalledWith()
D) All of the above
Answer: D
Explanation: You can
check if a prop function is called using various assertions like
toHaveBeenCalled(), toHaveBeenCalledTimes(), and toHaveBeenCalledWith().
What is the purpose of
act() in React Testing Library?
A) It runs asynchronous
code inside the test.
B) It ensures updates
to the component are processed before assertions.
C) It simulates user
interactions.
D) It triggers
component lifecycle methods.
Answer: B
Explanation: act()
ensures that all updates related to the component's state or props are flushed
before making assertions.
Which of the following
assertions checks if an element has a specific text content?
A) toHaveTextContent()
B) toHaveInnerText()
C) toContainText()
D) toHaveContent()
Answer: A
Explanation:
toHaveTextContent() is used to check if an element contains the specified text.
What does jest.spyOn()
do in Jest testing?
A) It spies on a method
or function to track calls and arguments.
B) It mocks a
function's return value.
C) It creates a mock
implementation of a function.
D) It triggers
component rerendering.
Answer: A
Explanation:
jest.spyOn() is used to spy on a method or function, allowing you to track its
calls, arguments, and return values.
Which React Testing
Library method returns a promise and waits for an element to appear?
A) getBy()
B) findBy()
C) queryBy()
D) waitFor()
Answer: B
Explanation: findBy()
returns a promise that resolves when an element is found in the DOM, making it
suitable for async tests.
How can you simulate a
keyboard event such as typing into an input field in React Testing Library?
A) fireEvent.keyDown()
B) fireEvent.change()
C) userEvent.type()
D) simulateTyping()
Answer: C
Explanation:
userEvent.type() simulates typing into an input field.
Which of the following
is the correct way to mock an imported function in Jest?
A)
jest.fn(mockedFunction)
B)
jest.mockFunction(mockedFunction)
C)
jest.mock('./module', () => mockedFunction)
D)
jest.mock('./module', mockImplementation)
Answer: D
Explanation:
jest.mock('./module', mockImplementation) is used to mock the imported
functions in the specified module.
Which of the following
is true about testing asynchronous components in React Testing Library?
A) You should always
use findBy methods for async elements.
B) queryBy should be
used for async elements.
C) getBy is the best
method for async elements.
D) Async components
don’t require special methods in testing.
Answer: A
Explanation: findBy
methods are designed to handle async rendering of components in React Testing
Library.
Which of the following
is a Jest matcher used to check if an element has a specific class?
A) toHaveClass()
B) toContainClass()
C) toHaveElementClass()
D) toClass()
Answer: A
Explanation:
toHaveClass() is used to check if an element contains a specific class name.
What is the purpose of
jest.resetAllMocks() in Jest testing?
A) It resets all mocked
functions and restores their initial implementations.
B) It cleans up the
entire test suite.
C) It mocks all modules
and functions again.
D) It resets only the
mock return values.
Answer: A
Explanation:
jest.resetAllMocks() resets all mock functions, restoring their original
implementations.
How can you handle
errors or exceptions in async tests with Jest?
A) Use .catch() to
handle errors in promises.
B) Use try/catch blocks
with async/await syntax.
C) Jest automatically
handles async errors.
D) There is no need to
handle errors in async tests.
Answer: B
Explanation: Using
try/catch blocks allows handling errors in async functions when testing.
Which Jest matcher is
used to verify that a mock function was called with specific arguments?
A)
toHaveBeenCalledWith()
B) toHaveArguments()
C) toHaveCallArgs()
D) toHaveBeenCalled()
Answer: A
Explanation:
toHaveBeenCalledWith() is used to verify that a mock function was called with
specific arguments.
What is the expected
output when expect([1, 2, 3]).toContain(2) is used in Jest?
A) Test passes because
the array contains 2.
B) Test fails because 2
is not an element of the array.
C) The test hangs
indefinitely.
D) The test throws an
error.
Answer: A
Explanation: The test
will pass because the array contains the value 2.
How can you test a
React component's lifecycle methods during a unit test?
A) Use jest.spyOn() to
spy on the lifecycle method.
B) Use act() to trigger
lifecycle methods.
C) Use render() to
check lifecycle updates.
D) Jest does not
support lifecycle method testing.
Answer: A
Explanation:
jest.spyOn() can be used to spy on lifecycle methods in React components,
allowing you to verify when they are called.
Which of the following
is the correct way to handle component state updates in React Testing Library
during tests?
A) Use fireEvent to
trigger state changes directly.
B) Use act() to
simulate state changes.
C) Use userEvent to
trigger state changes.
D) State updates cannot
be tested in React Testing Library.
Answer: B
Explanation: act()
ensures that all state changes and component updates are processed before
assertions are made in tests.
These additional
questions cover more advanced concepts in unit testing with Jest and React
Testing Library. Let me know if you'd like further explanations or more
questions!
You said:
more
ChatGPT said:
ChatGPT
Here are more
multiple-choice questions (MCQs) related to Unit Testing with Jest and React
Testing Library:
MCQs: Unit Testing with
Jest and React Testing Library (More Questions)
Which function in Jest
is used to mock a module or specific function in a module?
A) jest.mock()
B) jest.fn()
C) jest.spyOn()
D) jest.clearMocks()
Answer: A
Explanation:
jest.mock() is used to mock a module or a specific function in that module.
What does
screen.getByRole('button') return?
A) An array of all
buttons on the page.
B) A single button
element that matches the role of 'button'.
C) The first button
element on the page.
D) None of the above.
Answer: B
Explanation:
screen.getByRole('button') returns the button element that matches the role
'button'. It is used for querying elements by their ARIA roles.
Which method is used to
wait for an element to appear asynchronously in React Testing Library?
A) waitForElement()
B) findBy()
C) waitFor()
D)
waitForComponentToUpdate()
Answer: C
Explanation: waitFor()
is used to wait for an element or condition to appear asynchronously in React
Testing Library.
What is the expected
result of expect(mockFn).toHaveBeenCalledTimes(2)?
A) The test passes if
the mock function has been called twice.
B) The test passes if
the mock function has been called once.
C) The test passes if
the mock function has been called more than twice.
D) The test fails if
the mock function is not called at all.
Answer: A
Explanation:
toHaveBeenCalledTimes(2) checks that the mock function has been called exactly
twice.
Which of the following
testing utilities is primarily used for simulating user events in React Testing
Library?
A) fireEvent
B) userEvent
C) render
D) screen
Answer: B
Explanation: userEvent
is the recommended utility in React Testing Library to simulate user
interactions like typing, clicking, etc.
What does the
fireEvent.click() method do in a Jest test with React Testing Library?
A) It triggers a click
event on an element.
B) It simulates a
mouseover event.
C) It simulates a
keyboard event.
D) It triggers a focus
event.
Answer: A
Explanation:
fireEvent.click() is used to simulate a click event on an element.
Which Jest matcher
would you use to verify if a component rendered with the correct text content?
A) toBeInTheDocument()
B) toHaveTextContent()
C) toContain()
D) toHaveInnerHTML()
Answer: B
Explanation:
toHaveTextContent() checks if an element contains the expected text content.
What is the purpose of
jest.clearAllMocks() in Jest tests?
A) To remove all mock
implementations.
B) To reset all mock
functions.
C) To clear mock calls
and reset mocks.
D) To stop all ongoing
tests.
Answer: C
Explanation:
jest.clearAllMocks() resets mock calls and mock implementations, ensuring no
side effects between tests.
Which Jest function is
used to make sure the component behaves after a state or prop change?
A) jest.spyOn()
B) jest.useFakeTimers()
C) act()
D) fireEvent()
Answer: C
Explanation: act() is
used to wrap component state or prop updates to ensure that updates are flushed
and components re-render as expected.
Which of the following
is used to simulate a typing action on an input field in React Testing Library?
A) fireEvent.change()
B) fireEvent.input()
C) userEvent.type()
D) simulateInput()
Answer: C
Explanation:
userEvent.type() is used to simulate typing in an input field.
What is the default
behavior of screen.queryByText() in React Testing Library?
A) It will throw an
error if the element is not found.
B) It will return null
if the element is not found.
C) It will return the
element, or undefined if not found.
D) It will return the
first matching element regardless of its visibility.
Answer: B
Explanation:
screen.queryByText() returns null if the element is not found in the DOM,
unlike getBy methods which throw errors.
Which method in React
Testing Library is used to search for an element asynchronously by its label?
A)
screen.getByLabelText()
B)
screen.findByLabelText()
C)
screen.queryByLabelText()
D)
screen.getByRole('label')
Answer: B
Explanation:
screen.findByLabelText() is used to search for an element asynchronously by its
label, and it returns a promise.
How can you test a
React component that displays data fetched asynchronously?
A) By simulating a
loading state using waitFor().
B) By using getByText()
immediately after rendering.
C) By waiting for the
component to fetch data using waitFor() and checking the result.
D) By using act() to
simulate a fetch call.
Answer: C
Explanation: You can
use waitFor() to wait for the asynchronous data to be loaded and then check the
result.
What is the purpose of
jest.resetModules() in Jest tests?
A) It resets all mocks
between tests.
B) It clears the cache
of imported modules.
C) It resets the global
state in Jest tests.
D) It stops the test
runner.
Answer: B
Explanation:
jest.resetModules() clears the module cache, forcing a re-import of modules in
the next test.
Which Jest function is
used to simulate a delay or mock timers in tests?
A) jest.useFakeTimers()
B) jest.setTimeout()
C) jest.delay()
D) jest.advanceTimersByTime()
Answer: A
Explanation:
jest.useFakeTimers() allows you to mock timers and simulate delays in tests.
What does
expect(element).toHaveClass('my-class') verify in Jest testing?
A) That the element has
an id attribute called 'my-class'.
B) That the element has
a class named 'my-class'.
C) That the element
contains text 'my-class'.
D) That the element is
rendered with a class that matches the 'my-class' selector.
Answer: B
Explanation:
toHaveClass('my-class') verifies that the element has a class attribute with
the specified class name.
How do you handle
component errors during Jest testing when rendering components asynchronously?
- A) Use expect().toThrow() to expect errors. - B) Use act() to catch
asynchronous errors. - C) Use screen.getByText() to check for errors. - D) Jest
automatically handles errors. - Answer: A
- Explanation:
expect().toThrow() can be used to verify that errors are properly thrown when
components fail to render or execute as expected.
