Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Calling render on a component that throws, results in 4 renders

Đang mở
#1,291 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Lĩnh vực
frontend, testing

Hướng nghiên cứu

Bắt đầu với phần tái hiện được liên kết trong error-component.spec.tsx và error-component.tsx, sau đó chạy test với các phiên bản React, Jest và @testing-library/react đã nêu. Theo dõi đường dẫn render để xác định lý do component gây lỗi được gọi lặp lại; vấn đề được giải quyết khi số lần render quan sát được được giải thích và hành vi mong đợi được xác lập bằng phạm vi kiểm thử phù hợp.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

  • @testing-library/react version: 14.2.2
  • Testing Framework and version: jest 29.4.1
  • DOM Environment: jest-environment-jsdom 29.4.1
  • node: 20.11.1
  • react: 18.2.0
Relevant code or config:

https://github.com/R-J-dev/example-error-render-issue/blob/main/src/test-error/error-component.tsx

error-component.tsx (just as an example, I know the return is unreachable):

export const ErrorComponent = () => {
  // This logs four times, but it should log only once?
  console.log('test error in component');
  // When debugging this during a test, the debugger wil stop here five times. But we expect that it stops only once?
  throw new Error('test error in component');
  return <p>This is an error test component, which will throw an error</p>;
};

error-component.spec.tsx:

import { render } from '@testing-library/react';
import { ErrorComponent } from './error-component';

it('should throw', () => {
  expect(() => render(<ErrorComponent />)).toThrow('test error in component');
});
What you did:

I was trying to test if a specific error was thrown in a component and used the render function from @testing-library/react.

What happened:

When debugging the component that is called in the render function, I found out that it seems to load 4/5 times.
Without throwing an error in the component that is being rendered, the component only loads once.
When calling the component that throws an error without the render function, the component only loads once.

Reproduction:

Reproduction repo can be found here: https://github.com/R-J-dev/example-error-render-issue/tree/main
It's a new setup created with: npx create-nx-workspace@latest (https://nx.dev/getting-started/intro)

The test: https://github.com/R-J-dev/example-error-render-issue/blob/main/src/test-error/error-component.spec.tsx
The component: https://github.com/R-J-dev/example-error-render-issue/blob/main/src/test-error/error-component.tsx

Problem description:

Not sure if this is normal behavior, but for me it's unexpected behavior and couldn't find why this is happening.

Also:

  • Probably not good for test performance
  • Mocking things once isn't possible, when testing if an error has thrown
Suggested solution:

It looks like that the problem is in the render function from @testing-library/react, but besides from that I have no clue yet.

Ngôn ngữ chính
JavaScript
Star
19.7k
Fork
1.2k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của testing-library/react-testing-library

Tất cả issue của testing-library/react-testing-library

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.