Behavior Testing

20th August 2020 at 2:19pm

Mosh 的 Redux 课程 中讲述了一个「行为测试」的概念。即不要纠结于单元测试去测每一个函数,更多是去测代码的行为。

譬如在使用 Redux 时,核心的流程是:

  1. 生成 action
  2. 分发(dispatch)action
  3. 观察 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

应该列出这样的流程表,再去写实际的测试代码。