Leon Gaban
Leon Gaban

Reputation: 39034

Enzyme test: TypeError: expect(...).find is not a function

Why is .find not a function in the code context below?

import React from 'react';
import { shallow } from 'enzyme';
import toJson from 'enzyme-to-json';
import { AuthorizedRoutesJest } from './AuthorizedRoutes';

// Components
import {
  Main
} from '../../components';

const wrapper = shallow(<AuthorizedRoutesJest />);

describe('<AuthorizedRoutes /> component', () => {
  it('should render', () => {
    const tree = toJson(wrapper);
    expect(tree).toMatchSnapshot();
    expect(wrapper).toHaveLength(1);
  });

  it('should contain a Main component', () => {
    expect(wrapper).find(Main).toHaveLength(1);
  });
});

Summary of all failing tests FAIL client/containers/Routes/AuthorizedRoutes.test.js

AuthorizedRoutes component › should contain a Main component

TypeError: expect(...).find is not a function

Upvotes: 1

Views: 9344

Answers (2)

Website Is Fun
Website Is Fun

Reputation: 300

This is in addition if you want to find a component with specific testID props

it('should render the date when the message was sent', () => {
   expect(chatBubbleComponent.findWhere((node) => node.prop('testID') === 'chat_sent_at')).toHaveLength(1);
});

Upvotes: 0

Leon Gaban
Leon Gaban

Reputation: 39034

I was using .find incorrectly

Here is an example of how to use find:

it('should contain a ConnectedRouter component', () => {
  expect(wrapper.find(ConnectedRouter)).toHaveLength(1);
});

it('should contain a Switch component', () => {
  expect(wrapper.find(Switch)).toHaveLength(1);
});

it('should contain 7 Route components', () => {
  expect(wrapper.find(Route)).toHaveLength(7);
});

Upvotes: 6

Related Questions