В чем разница между имитацией действий и вызовом их вручную в шутку? - PullRequest
0 голосов
/ 26 июня 2019

В чем разница между имитацией действий и вызовом их вручную?

Я смонтировал компонент с помощью фермента.

const wrapper = mount(
  <Provider store={store}>
    <CreateNavItemForm />
  </Provider>,
)

const formWrapper = wrapper.find('CreateNavItemForm').first()

В чем разница и какой подход лучше?

   const title = 'title'

1-й:

formWrapper
   .find('input')
   .at(0)
   .props()
   .onChange(title)

2-й:

formWrapper
  .find('input')
  .at(0)
  .simulate('change', { target: { value: title } })

1 Ответ

0 голосов
/ 26 июня 2019

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

Кроме того, вы проверяете, что ваш компонент подключен правильно: например, учтите, что это ваш компонент:

const SpecialInput = ({onChange}) => (<input name />);

Этот компонент вообще не использует onChange, ваш тест с использованием пропора пройдет, но в реальном сценарии он не будет работать, как ожидалось.

Кроме того, когда вы тестируете с использованием проп, это означает, что вы знаете о внутренней реализации компонента, поэтому, если в будущем вы захотите изменить реализацию, но не функциональность, которая вам понадобится изменить тест , который является запахом плохого теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...