【发布时间】:2020-08-03 18:15:59
【问题描述】:
我一直在研究大量资源以使用带有 React Hook 的 useState 来测试内部状态,但仍然找不到满意的答案,一些测试用例正在从 mount 或 shallow 获取预期值,这将显示在 UI 端而不是从组件的内部状态(useState)显示,如果组件没有在 UI 端暴露状态值怎么办,例如:
const TestComponent = () => {
const [count, setCount] = React.useState(0);
return (
<span>
<button id="count-up" type="button" onClick={() => setCount(count + 1)}>Count Up</button>
</span>
);
}
如何编写测试用例进行测试
1) 当组件挂载时,我的内部状态count会被初始化为0?
2) 当组件在按钮count-up 上模拟onClick 事件时,应该调用我的setCount 并且我的内部状态count 应该变为1?
【问题讨论】:
-
如果你将钩子移到一个单独的文件中会更容易,然后我们可以单独测试钩子本身(例如使用像github.com/testing-library/react-hooks-testing-library这样的库)。如果要测试绑定到组件的钩子,测试IMO的最佳方法是模拟点击并直接检查结果。
-
@JeeMok,嗨,你有我可以参考的例子吗?我不确定应该将哪个部分移到单独的文件中,因为您可以看到我的组件已经很小了...
-
@JeeMok
useState钩子是 React 的一部分,它已经在一个单独的文件中。
标签: reactjs jestjs react-hooks enzyme