Как установить состояние в реагирующей-тестирующей библиотеке - PullRequest
0 голосов
/ 06 июля 2019

Обзор:

  • Я рефакторинг тестов сценариев до того, как я использовал Enzyme для тестирования, но теперь я хочу использовать @ testing-library / реаги

Проблема:

  • Я не могу найти решение для setState в @ testing-library / реаги

1 Ответ

0 голосов
/ 08 июля 2019

Использование setState опасно, независимо от используемой библиотеки тестирования.

  1. Это зависит от деталей реализации (скажем, имен свойств внутри состояния), поэтому поддерживать тесты становится намного сложнее - больше тестов менять, легко ломать тест, когда приложение в порядке и т. Д.
  2. Вы не можете вызывать это после преобразования компонента класса в функциональный с помощью ловушек. Так что вы еще больше зависите от деталей реализации.
  3. И, наконец, прямые манипуляции с государством могут закончиться состоянием, которого вы никогда не получите в реальном мире. Это означает, что ваш компонент будет сломан, потому что невозможно достичь какого-то состояния, но ваши тесты с прямой инициализацией будут в порядке.

Так что тебе лучше делать? Предоставьте реквизиты, измените реквизиты, вызовите реквизиты (wrapper.find('button').filter(button => button.text() === 'Cancel').props().onClick() для фермента, fireEvent.click(getByText(/Cancel/i)) для RTL) и проверьте, что отображается.

Таким образом, ваши тесты будут короче, наиболее актуальными и потребуют меньше изменений после обновления тестируемого компонента.

...