Jest - how to test if a component does not exist?

2019-04-18 06:37发布

问题:

How do I check if a component is not present, i.e. that a specific component has not been rendered?

回答1:

You can use enzymes contains to check if the component was rendered:

expect(component.contains(<ComponentName />)).toBe(false)


回答2:

.contains receives a React Node or array of Nodes as an argument. Instead, use .find:

expect(wrapper.find('selector').exists()).toBeTruthy()


回答3:

.contains does not expect a selector, unlike find. You can look at the length attribute of the ShallowWrapper

expect(wrapper.find('...')).toHaveLength(0)

I found I needed to use this syntax with Enzyme and Jest to test if a Connected Component existed in the rendered output.



回答4:

Providing a slightly updated answer based on the documentation for toExist

function Fixture() {
  return (
    <div>
      <span className="foo" />
      <span className="bar baz" />
    </div>
  );
}

const wrapper = mount(<Fixture />); // mount/render/shallow when applicable

expect(wrapper.find('span')).toExist();
expect(wrapper.find('ul')).not.toExist();


标签: jestjs enzyme