前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redux源码解读(二)测试环境搭建和代码测试

redux源码解读(二)测试环境搭建和代码测试

作者头像
flytam
发布2020-01-14 16:58:30
3390
发布2020-01-14 16:58:30
举报

(一)中写了一个简易版的redux,测试都是直接通工看命令行输出的,显然这是不科学的

所以就需要写测试了,所以。我选择了jest

网上的介绍如下….

配置简单的测试环境按照官方文档

代码语言:javascript
复制
npm install --save-dev jest

把下面的内容添加到package.json

代码语言:javascript
复制
{
  "scripts": {
    "test": "jest"
  }
}

添加babel支持,支持最新的es语法

代码语言:javascript
复制
npm install babel-preset-env --save-dev
代码语言:javascript
复制
//.babelrc
{
    "presets": ["env"]
  }

这时候,在终端运行npm run test ,jest就会自动去运行项目目录下的每一个xxx.test.js和xxx.spec.js

结合前面的简易store写了几个简单的test样例

代码语言:javascript
复制
const createStore = require('../src/createStore');
const {testReducer} = require('./testdata');
describe('测试createStore', () => {
    it('测试store实例的函数接口', () => {
        const store = createStore(testReducer);
        const methods = Object.keys(store)
        expect(methods.length).toBe(4)
        expect(methods).toContain('subscribe')
        expect(methods).toContain('dispatch')
        expect(methods).toContain('getState')
        expect(methods).toContain('replaceReducer')
    });
    it('测试state初始值', () => {
        const store = createStore(testReducer, {sum: 520});
        expect(store.getState()).toEqual({sum: 520})
    });
    it('测试dispatch', () => {
        const store = createStore(testReducer, {sum: 0});
        expect(store.getState()).toEqual({sum: 0});

        //加一
        store.dispatch({type: 'ADD'});
        expect(store.getState()).toEqual({sum: 1});
        //减一
        store.dispatch({type: 'DEC'});
        expect(store.getState()).toEqual({sum: 0});
    })
})
这里写图片描述
这里写图片描述

可见,测的几个样例都成功了。如果错误是会报错的,例如把初值的期待值写为-1 expect(store.getState()).toEqual({sum: -1}); 这样就会报错了,显示出来

这里写图片描述
这里写图片描述

再也 告别了那种人肉控制台测试的时光了hhhh

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档