【发布时间】:2019-07-01 02:24:03
【问题描述】:
https://reactjs.org/docs/hooks-faq.html#how-to-test-components-that-use-hooks
文档显示我们应该使用React DOM来测试组件。但是在很多情况下,我们的逻辑组件会渲染另一个ui组件。并且可能逻辑组件中的函数会作为prop传递给ui组件,就像
function Foo(){
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `You clicked ${count} times`;
});
function onChange(value) {
setCount(value);
}
return <Bar value={count} onChange={onChange} />
}
function Bar(props){
const { value, onChange } = props;
return (
<div>
<p>You clicked {value} times</p>
<button onClick={() => onChange(count + 1)}>
Click me
</button>
</div>
);
}
在这种情况下,如何测试onChange()等在DOM中无法获取的功能呢?这是最简单的情况。如果我们使用一些像material-design和ant-design这样的组件库,我们通常不知道DOM结构。
【问题讨论】:
-
在这种情况下,你只需在
p标签中添加一个id .. 但我不知道你是否使用material-ui
标签: javascript reactjs react-hooks