模拟动作与手动调用动作有什么区别?
我已经用酶固定好了组件。
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 } })
答案 0 :(得分:0)
一个好问题,有一个区别,当您使用模拟进行检查时,您将模仿更真实的场景。
此外,您正在检查组件的接线是否正确:例如,请考虑这是您的组件:
const SpecialInput = ({onChange}) => (<input name />);
此组件完全没有使用onChange
,使用道具用法的测试将通过,但在实际情况下它将无法按预期工作。
此外,在使用道具用法进行测试时,这意味着您知道组件的内部实现,因此,如果将来您想更改实现而不是功能,则需要< strong>更改测试,这是测试不好的味道。