В приведенном ниже примере у меня есть компонент с именем <BigList />
, который принимает компонент в качестве реквизита с именем toggleComponent
.Затем я передаю этот компонент в метод рендеринга, это настройка, чтобы я мог иметь несколько различных типов переключаемых компонентов.Проблема, с которой я сталкиваюсь, заключается в том, как правильно протестировать методы prop для компонента, который я передаю в <BigList />
.Из-за этого мое покрытие кода уменьшается, и я не совсем уверен, как здесь можно издеваться над обработчиком onChange.
<BigList
title="Some Props"
toggleComponent={
<Checkboxt
onChange={() =>
someMethod()
}
/>
}
>
<Checkbox
onChange={() =>
anotherMethod()
}
/>
</BigList>
Используя Enzyme и Sinon, я пытался сделать что-то подобное, но безрезультатно,Я заканчиваю с ошибками, связанными с недоступностью реквизита.Я просто хочу убедиться, что обработчик onChange запускается при событии change для реквизитов toggleComponent.
const component = shallow(
<ParentComponent />
);
const event = {target: {name: "event", value: "event value"}};
const toggleComponent = component.find('BigList').at(1).props().toggleComponent;
toggleComponent.props().onChange = stub();
toggleComponent.simulate('change', event);
t.equal(
toggleComponent.onChange.callCount,
1,
'Should call onChange'
);