8.3.1 action构造函数测试
您可以在百度里搜索“深入浅出React和Redux 艾草文学(www.321553.xyz)”查找最新章节!
8.3.1 action构造函数测试
普通的action构造函数是很简单的单元测试,简单到往往让开发者觉得很无聊。
对应于第5章的todo_with_selector/src/todos/actions.js的单元测试代码,存放在文件todo_with_selector/test/todos/actions.test.js中,首先看测试套件的组织,代码如下:
describe('todos/actions', () => {
describe('addTodo', () => {
//在这里添加it测试用例
});
});
因为测试目标是todos功能模块的action构造函数,最顶层的describe名为“todos/actions”,不过todos包含addTodo、toggleTodo和removeTodo这些action构造函数。为了便于阅读,我们为每一个构造函数单独创建一个describe测试套件。
接下来我们看看针对addTodo的测试用例,首先需要验证addTodo函数执行返回的结果是预期的对象,代码如下:
it('should create an action to add todo', () => {
const text = 'first todo';
const action = addTodo(text);
expect(action.text).toBe(text);
expect(action.completed).toBe(false);
expect(action.type).toBe(actionTypes.ADD_TODO);
});
多次调用addTodo函数返回的对象具有一样的内容,只有id值是不同的,因为每一个新创建的待办事项都要有唯一的id,对应的单元测试代码如下:
it('should have different id for different actions', () => {
const text = 'first todo';
const action1 = addTodo(text);
const action2 = addTodo(text);
expect(action1.id !== action2.id).toBe(true);
});
从上面代码可以看出单元测试的基本套路如下:
1)预设参数;
2)调用纯函数;
3)用expect验证纯函数的返回结果。 深入浅出React和Redux