开发者问题收集

我在 jest 中使用 toHaveBeenCalled() 时遇到错误?

2020-11-18
111

我在使用 toHaveBeenCalled 时遇到错误,请纠正我哪里出错了

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 */
1个回答

如果项目位于任何其他组件内作为子组件,则需要对包装器组件执行 dive()。浅渲染仅允许您访问外部/父组件布局。

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} >
Dhruvi Makvana
2020-11-18