Mosh 的 Redux 课程 中讲述了一个「行为测试」的概念。即不要纠结于单元测试去测每一个函数,更多是去测代码的行为。
譬如在使用 Redux 时,核心的流程是:
- 生成 action
- 分发(dispatch)action
- 观察 store 中的 state 数据变化
那么测试就应该 重点观察 state 数据的变化,而不是关心 action object 生成得对不对。
另外 Mosh 还演示了一下测试的思路。代码中有一个 action 是 loadBugs
,即加载 bug 列表。这个 bug 列表数据存在服务器中,如果拉取过,会在本地有个缓存。那么测试的内容也要包含缓存相关的逻辑。它列了一个流程:
- loading bugs
- if they exist in the cache
* they should come from the cache
- if they don't exist in the cache
* they should be fetched from the server
- loading indicator
* should be true while fetching
* should be false after bugs are fetched
* should be false if the server fails
应该列出这样的流程表,再去写实际的测试代码。