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`.