score:1

You are mocking ./SearchBox module, so you'd better don't extends original SearchBox component. You should create a simple mocked version for SearchBox component.

E.g.

MyComponent.tsx:

import React from 'react';
import { SearchSection } from './SearchSection';

export class MyComponent extends React.Component {
  render() {
    return <SearchSection />;
  }
}

SearchBox.tsx:

import React from 'react';

export class SearchBox extends React.Component {
  private timer: ReturnType<typeof setTimeout> | null = null;

  public asyncmethod() {
    if (this.timer !== null) {
      clearTimeout(this.timer);
    }
    this.timer = setTimeout(() => {
      console.log('doSomething');
    }, 1000);
    console.log('using original class method');
    return 'search real text';
  }

  render() {
    return <div>{this.asyncmethod()}</div>;
  }
}

SearchBoxSection.tsx:

import React from 'react';
import { SearchBox } from './SearchBox';

export class SearchSection extends React.Component {
  render() {
    return <SearchBox />;
  }
}

testUtil.tsx

import React from 'react';

export class MockedSearchBox extends React.Component {
  public asyncMethod() {
    console.log('using mocked class method');
    return 'Search mock text';
  }
  render() {
    return <div>{this.asyncMethod()}</div>;
  }
}

MyComponent.spec.tsx:

import React from 'react';
import { render } from '@testing-library/react';
import { MyComponent } from './MyComponent';

jest.mock('./SearchBox', () => {
  const { MockedSearchBox } = require('./testUtil');

  return {
    SearchBox: MockedSearchBox,
  };
});

describe('My component', () => {
  test('that my component shows text', () => {
    const { getByText } = render(<MyComponent />);
    expect(getByText('Search mock text')).toBeDefined();
  });
});

unit test result:

 PASS  examples/65933863/MyComponent.spec.tsx (9.544 s)
  My component
    √ that my component shows text (59 ms)

  console.log
    using mocked class method

      at MockedSearchBox.asyncMethod (examples/65933863/testUtil.tsx:5:13)

-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------------|---------|----------|---------|---------|-------------------
All files          |     100 |      100 |     100 |     100 | 
 MyComponent.tsx   |     100 |      100 |     100 |     100 | 
 SearchSection.tsx |     100 |      100 |     100 |     100 | 
 testUtil.tsx      |     100 |      100 |     100 |     100 | 
-------------------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        11.973 s

Related Query

More Query from same tag