8

I'm getting TypeError: actImplementation is not a function when trying a simple test for this component

import React from 'react';
import { StyledHeaderContainer, StyledTitle } from './styled';

export const Header = () => {
  return (
    <StyledHeaderContainer>
      <StyledTitle data-testid='title-test-id'>Subject Access Request</StyledTitle>
    </StyledHeaderContainer>
  );
};

This is my test

import * as React from 'react';
import 'jest-styled-components';

import { render, screen } from '@testing-library/react';
import { Header } from '../';
import "@testing-library/jest-dom";

describe('Header', () => {
  it('is rendered correctly', () => {
    expect(<Header />).toMatchSnapshot();
  });
});

describe('Title', () => {
    it('should have correct text', () => {
        render(<Header />);
        expect(screen.getByTestId('title-test-id')).toHaveTextContent('Subject Access Request');
    })
})

It is pointing to the render(<Header /) as the problem

Anyone have any ideas?

3
  • I am facing similar issues, seems to be the problem with react-dom version 18 Commented Apr 2, 2022 at 9:54
  • Can you post your package.json please Commented Apr 4, 2022 at 23:54
  • 1
    I had the same problem, and the problem was a wrong moduleNameMapper config in my jest.config. This issue has helped me github.com/testing-library/react-testing-library/issues/… Commented May 10, 2022 at 22:15

4 Answers 4

7

I was getting the same error when using react@17, react-dom@18 and @testing-library-react@13. Upgrading react to 18 solved the problem.

Sign up to request clarification or add additional context in comments.

2 Comments

Unfortunately due to company policy I need to use the typescript version which isn't at 18 yet by the looks of things. Still this is helpful and I found another work around :)
Updating to React 18 also worked for me.
0

You are not importing Header correctly change the import to:

import { Header } from '../Header';

(or whatever file is exporting the Header component)

Also your first test is not rendering a component so the test is failing.

Change it to:

it('is rendered correctly', () => {
 render(<Header />);
 expect(<Header />).toMatchSnapshot();
});

Comments

0

Ok so after much trial and error it turned out to be a simple fix. I had applied this import in my test but not the component import * as React from 'react';

Comments

0

In my case it was due to uncompatible versions of npm, node and react.

Updating [email protected], [email protected] & [email protected] solved my issue

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.