Это компонент <Foo />, который я хочу протестировать.
...
return (
<span
className = {`foo ${a === 'b' ? 'bar' : ''} ${className}`}>
{kitten === 'cats' ?
<Cat
... />
:
<Dog
... />
}
<div
className = {
`find-me
${foo === 'bar' ? 'abc' : 'def'}
${cats}
${dogs}`
}>
{
children.map((obj, index) => {
...
}
</div>
</span>
...
и вот как я пытаюсь проверить
it('constructs correctly when there are three children rendered', () => {
const component = mount(
<Foo >
{options}
</Foo>
);
expect(component.find('.find-me').children()).to.have.lengthOf(3);
component.unmount();
});
Но я получаю
TypeError: Cannot read property 'have' of undefined
Почему он не может найти класс?
@MattCarlotta, где я могу узнать об этом to.have.foo? В документах airbnb.io/enzyme/docs/api/ReactWrapper/children.html указано to.have.lengthOf.
к сожалению, это не выделено в документах фермента. они предоставляют примеры, основанные на системе chai. вы не обязаны использовать это, так как шутка предоставляет вам свой собственные матчеры





.toHaveLength()