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();