user13465472
user13465472

Reputation: 117

I am getting error on using toHaveBeenCalled() in jest?

I am getting error on using toHaveBeenCalled, Please correct me where am going wrong

code:

jsx

 <item
  onClick={ load ? undefined : onClick}
>

test

test('render', () => {
const MockItems = jest.fn()
const prop = {
  onClick: MockItems,
}
const onclickProp=  output.find(item).props().onClick
onclickProp(undefined)

expect(props.onClick).toHaveBeenCalled()//error

}

error

 expect(props.onClick).toHaveBeenCalled()

 Warning: An update to null inside a test was not wrapped in act(...).

When testing, code that causes React state updates should be wrapped into act(...):

act(() => {
  /* fire events that update state */
});
/* assert on the output */

Upvotes: 0

Views: 152

Answers (1)

Dhruvi Makvana
Dhruvi Makvana

Reputation: 905

If the item is inside any other component as a child component you need to dive() on the wrapper component. Shallow rendering gives you access to only outer/parent component layout.

describe('item parent Component', () => {
  let wrapper,instance
  
  beforeEach(() => {
    mockProps = {
      handleClick: jest.fn()
    }
    const component = (<parent {...mockProps} />)
    wrapper = shallow(component).dive()
  })
  
  it('item is clicked', () => {
    wrapper.find(item).simulate('click')
    expect(handleClick).toHaveBeenCalled()
  })
)}
<item onClick={ load ? undefined : onClick} >

Upvotes: 1

Related Questions