Skip to content

Jest snapshot testing - ReactTestRenderer: Invariant Violation: getNodeFromInstance: Invalid argument #384

Closed
@baraneedharan

Description

@baraneedharan

I am trying to write snapshot testing for my component which uses react-datetime. Since i was getting error I removed all the code related to my component and tested react-datetime only.

Here is the test spec file

import React from 'react';
import renderer from 'react-test-renderer';
import DateTime from 'react-datetime';

describe('DateTimer', () => {

  it('render Date picker', () => {
    const dateTimer = renderer.create(
      <DateTime timeFormat={false}/>
    );
    expect(dateTimer.toJSON()).toMatchSnapshot();
  });
});

When I run my test, I get the below error

  ● CalendarTimer › rendered render Date picker

    Invariant Violation: getNodeFromInstance: Invalid argument.

      at invariant (node_modules/fbjs/lib/invariant.js:44:15)
      at Object.getNodeFromInstance (node_modules/react-dom/lib/ReactDOMComponentTree.js:162:77)
      at Object.findDOMNode (node_modules/react-dom/lib/findDOMNode.js:49:41)
      at componentDidMount (node_modules/react-onclickoutside/index.js:153:40)
      at chainedFunction [as componentDidMount] (node_modules/create-react-class/factory.js:617:11)
      at node_modules/react-test-renderer/lib/ReactCompositeComponent.js:265:25
      at measureLifeCyclePerf (node_modules/react-test-renderer/lib/ReactCompositeComponent.js:75:12)
      at node_modules/react-test-renderer/lib/ReactCompositeComponent.js:264:11
      at CallbackQueue.notifyAll (node_modules/react-test-renderer/lib/CallbackQueue.js:76:22)
      at ReactTestReconcileTransaction.close (node_modules/react-test-renderer/lib/ReactTestReconcileTransaction.js:36:26)
      at ReactTestReconcileTransaction.closeAll (node_modules/react-test-renderer/lib/Transaction.js:206:25)
      at ReactTestReconcileTransaction.perform (node_modules/react-test-renderer/lib/Transaction.js:153:16)
      at batchedMountComponentIntoNode (node_modules/react-test-renderer/lib/ReactTestMount.js:69:27)
      at ReactDefaultBatchingStrategyTransaction.perform (node_modules/react-test-renderer/lib/Transaction.js:140:20)
      at Object.batchedUpdates (node_modules/react-test-renderer/lib/ReactDefaultBatchingStrategy.js:62:26)
      at Object.batchedUpdates (node_modules/react-test-renderer/lib/ReactUpdates.js:97:27)
      at Object.render (node_modules/react-test-renderer/lib/ReactTestMount.js:125:18)
      at Object.<anonymous> (tests/components/Input/CalendarTimer_spec.js:8:53)
      at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)
      at process._tickCallback (internal/process/next_tick.js:103:7)

and

When I tried using shallow and snapshot together like below

import React from 'react';
import { shallow } from 'enzyme';
import DateTime from 'react-datetime';

describe('DateTimer', () => {

  it('render Date picker', () => {
    const dateTimer = shallow(
      <DateTimer timeFormat={false}/>
    );
    expect(dateTimer).toMatchSnapshot();
  });
});

When I run the test .snap file got generated and it is rendering the calendarContainer as like below

exports[`DateTimer rendered Date picker 1`] = `
ShallowWrapper {
  "complexSelector": ComplexSelector {
    "buildPredicate": [Function],
    "childrenOfNode": [Function],
    "findWhereUnwrapped": [Function],
  },
  "length": 1,
  "node": <div
    className="rdtPicker"
>
    <Unknown
        className=""
        closeOnSelect={false}
        closeOnTab={true}
        dateFormat={true}
        defaultValue=""
        input={true}
        inputProps={Object {}}
        onBlur={[Function]}
        onChange={[Function]}
        onFocus={[Function]}
        strictParsing={true}
        timeConstraints={Object {}}
        timeFormat={true}
        utc={false}
    />
</div>,

Can someone please help me fixing this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions