https://reactjs.org/docs/hooks-faq.html#how-to-test-components-that-use-hooks
文档显示我们应该使用 React DOM 来测试组件。但是在很多情况下,我们的逻辑组件会渲染另一个 ui 组件。并且可能逻辑组件中的函数会作为道具传递给 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结构。