Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

356
Views
Why isn't child component rendering when testing with React Testing Library?

I am writing UI unit tests using Jest/Testing Library.

I have a DashboardLayout component that returns

return (
    <DashboardLayoutRoot sx={{ marginTop: '30px' }}>
      <DashboardNavbar
        onSidebarMobileOpen={(): void => setIsSidebarMobileOpen(true)}
      />
      <DashboardSidebar
        onMobileClose={(): void => setIsSidebarMobileOpen(false)}
        openMobile={isSidebarMobileOpen}
      />
      <DashboardLayoutWrapper>
        <DashboardLayoutContainer>
          <DashboardLayoutContent>{children}</DashboardLayoutContent>
        </DashboardLayoutContainer>
      </DashboardLayoutWrapper>
    </DashboardLayoutRoot>
  );

DashboardNavBar:

<DashboardNavbarRoot {...other}>
      <Toolbar sx={{ minHeight: 64 }}>
        <Hidden lgUp>
          <IconButton color="inherit" onClick={onSidebarMobileOpen}>
            <MenuIcon fontSize="small" data-testid="sidebar-icon" />
          </IconButton>
        </Hidden>

As you can see I set testid in MenuIcon.

However, when rendering in test, getByTestId fails.

// skip setup above

render(
    <Provider store={store}>
      <DashboardLayout />
    </Provider>,
  );
 const sidebarIcon = screen.getByTestId('sidebar-icon');

  expect(sidebarIcon).toBeVisible();

I do set up everything correctly, like mock router, Provider etc.

Why is this happening?

Should I just render DashboardNavbar by itself? (not sure if this would be good UI unit test though)

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You might need to mock the child component and test for mocked component

// skip setup above
jest.mock('./MenuIcon', () => ({ MenuIcon : () => 'mocked menu icon' }));

const container = render(
    <Provider store={store}>
      <DashboardLayout />
    </Provider>,
  );
 

  expect(container).toMatchInlineSnapshot(`
      <div>
        mocked menu icon
      </div>
    `);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!