模拟动作与开玩笑地手动调用有什么区别?

时间:2019-06-26 10:59:32

标签: reactjs unit-testing jestjs enzyme

模拟动作与手动调用动作有什么区别?

我已经用酶固定好了组件。

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

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

有什么区别,哪种方法更好?

   const title = 'title'

第一:

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

第二:

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

1 个答案:

答案 0 :(得分:0)

一个好问题,有一个区别,当您使用模拟进行检查时,您将模仿更真实的场景。

此外,您正在检查组件的接线是否正确:例如,请考虑这是您的组件:

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

此组件完全没有使用onChange,使用道具用法的测试将通过,但在实际情况下它将无法按预期工作。

此外,在使用道具用法进行测试时,这意味着您知道组件的内部实现,因此,如果将来您想更改实现而不是功能,则需要< strong>更改测试,这是测试不好的味道。