Правильное тестирование компонентов передается как реквизит - PullRequest
0 голосов
/ 20 ноября 2018

В приведенном ниже примере у меня есть компонент с именем <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'
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...