Skip to content

React.createElement: type is invalid when using antd layout component? #114

Closed
@dgtlmonk

Description

@dgtlmonk
  • react-testing-library version: "^3.1.4"
  • react version: "^16.4.0"
  • node version: v8.9.0
  • npm (or yarn) version: 5.5.1
  • antd version: "^3.6.2",

Relevant code or config:

// Login component
import {default as LoginForm } from 'components/Login/Form'
import Layout from 'antd' // layout component https://ant.design/components/layout/

const Login = () => {
  return (
    <Layout>  {/*  this markup breaks the test */}
      <h2 data-testid='login-screen'>Login</h2>
      <LoginForm>
      </LoginForm>
    </Layout>
  )
}

export default Login
// test
import React from 'react'
import 'jest-dom/extend-expect';
import {cleanup, renderIntoDocument} from 'react-testing-library'
import {default as Login} from '../containers/Login/';

afterEach(cleanup)

describe('<Login />', () => {
  let comp
  beforeEach(() => {
    comp = renderIntoDocument(<Login />)
  })

  describe('when rendered', () => {
    it('then should show login welcome text', () => {
       const { getByTestId } = comp

      expect(getByTestId('login-screen', { selector: 'h2' })).toBeInTheDOM()
    })
  });
})

What you did:

I'm using CRA boiler plate and just run npm test

What happened:

React.createElement: type is invalid
image

Reproduction:

Problem description:

Not sure if it's a bug with jsdom or the test library?

Suggested solution:

Removing the Layout markup from the code would run the test successfully like so

```js
// Login component
import {default as LoginForm } from 'components/Login/Form'
import Layout from 'antd' // layout component https://ant.design/components/layout/

const Login = () => {
  return (
       <div>
            <h2 data-testid='login-screen'>Login</h2>
            <LoginForm>
            </LoginForm>
       <div>
  )
}

export default Login
<!--
It's ok if you don't have a suggested solution, but it really helps if you could
do a little digging to come up with some suggestion of how to improve things.
-->

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions