【发布时间】:2019-05-16 09:47:38
【问题描述】:
我有以下 React 功能组件,它接受名称作为道具
const Name = ({ name }) => <h1>{name}</h1>;
Name.propTypes = {
name: PropTypes.string.isRequired
}
而我的测试如下
describe("<Name />", () => {
it("accepts name as a prop", () => {
const wrapper = shallow(<Name name="Monkey D Luffy"/>);
expect(wrapper.instance().props.name).toBe("Monkey D Luffy");
})
})
这会返回以下错误
TypeError: 无法读取 null 的属性“props”
更新
我如下调用Name组件
class Person extends React.Component {
state = {name: "Name here"}
render () {
return <div><Name name={this.state.name} /></div>
}
}
我发现在无状态组件上调用 instance() 不适用于 react 16。* 在我的情况下,我不能使用 wrapper.prop(),因为它只返回根节点的道具
为什么在渲染组件上调用实例函数时返回null,如何测试传递给无状态组件的props?
原始问题
为什么在渲染组件上调用实例函数时返回null
【问题讨论】:
-
您提到的组件结构如何,您不能使用 wrapper.prop()?
标签: javascript reactjs jestjs enzyme