Reactjs 使用PropType测试组件
如果我有一个定义了Reactjs 使用PropType测试组件,reactjs,testing,react-proptypes,Reactjs,Testing,React Proptypes,如果我有一个定义了PropTypes的react组件?测试这一点的最佳方法是什么,以确保在不依赖道具类型软件包的警告的情况下提供道具 例如,如果我有这样一个组件: const Button = ({ text }) => <button>{text ? text : 'default button text'}</button> Button.propTypes = { text: PropTypes.string.isRequired } 我的一部分是说,
PropTypes
的react组件?测试这一点的最佳方法是什么,以确保在不依赖道具类型
软件包的警告的情况下提供道具
例如,如果我有这样一个组件:
const Button = ({ text }) => <button>{text ? text : 'default button text'}</button>
Button.propTypes = {
text: PropTypes.string.isRequired
}
我的一部分是说,PropTypes
意味着我们实际上不需要测试它。我的部分建议,我们应该将警告和默认文本作为单独的测试用例进行测试
如果您对此有任何想法和意见,我们将不胜感激。如果您提供默认文本,则不应根据需要标记
text
属性。此注释适用于没有此道具提供的值组件无法工作的情况。我们可以看到,情况并非如此。如果提供默认文本,则不应根据需要标记text
属性。此注释适用于没有此道具提供的值组件无法工作的情况。我们可以看到,情况并非如此。删除.isRequired
指定,并使用defaultProps
静态属性指定默认属性值,而不是执行三元条件。根据需要标记道具,然后尝试为其指定默认值,这是一种反模式。删除.isRequired
指定,使用defaultProps
静态属性指定默认道具值,而不是执行三元条件。将道具标记为所需,然后尝试为其指定默认值是一种反模式。您可以使用defaultProps静态属性。如果您不定义道具,则会设置回退
Button.defaultProps={
文本:“默认文本”,
}
您可以使用defaultProps静态属性。如果您不定义道具,则会设置回退
Button.defaultProps={
文本:“默认文本”,
}
您应该从属性类型中删除所需的isRequired
,并设置Button.defaultProps={text:'default Button text'}
,而不是在render()函数中手动执行此操作。然后,如果测试中未提供文本,您可以测试text
是否默认为default button text
。您应该从属性类型中删除isRequired
,并设置button.defaultProps={text:'default button text'}
,而不是在render()
函数中手动执行此操作。然后你可以测试,如果没有提供文本,你的测试中text
默认为default button text
。谢谢你,我在这里明显有精神障碍。谢谢,我在这里明显有精神障碍。
console.error node_modules\fbjs\lib\warning.js:33
Warning: Failed prop type: The prop `text` is marked as required in `Button`, but its value is `undefined`.