前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jest进阶:接入ts、集成测试与覆盖率统计

Jest进阶:接入ts、集成测试与覆盖率统计

作者头像
心谭博客
发布2020-04-21 15:12:49
2.7K0
发布2020-04-21 15:12:49
举报
文章被收录于专栏:YuanXinYuanXin

接入 TypeScript

在给 vemojs 做完各种测试之后,导师很快提出了新的要求,给 clousebase-cli 编写测试用例。有个问题摆在眼前:它是用 typescript 编写,所以需要配置相关环境。

好吧,不说废话了,直接上干货。

jest.config.js 配置内容如下,解释在注释里面:

代码语言:javascript
复制
module.exports = {
    roots: [
        "/test" // 测试目录
    ],
    transform: {
        "^.+\\.tsx?$": "ts-jest" // 匹配 .ts 或者 .tsx 结尾的文件
    },
    collectCoverage: true, // 统计覆盖率
    testEnvironment: "node", // 测试环境
    setupFilesAfterEnv: [
        "/jest.setup.js" // 之后再说
    ],
    // 不算入覆盖率的文件夹
    coveragePathIgnorePatterns: [
        "/node_modules/",
        "/test/",
        "/deps/"
    ]
};

上面有个 jest.setup.js ,它的内容是: jest.setTimeout(60000) 。因为有时候网速很慢,api 请求延时会很高,所以这个就是设置请求超时时间为 1 分钟。

最坑的一点是,除了 jest 的配置文件,还要修改 typescript 对应的文件, tsconfig.json 内容如下。types 中必须添加 jest ,否则找不到 expectdescribe 等变量的定义。

代码语言:javascript
复制
{
    "compilerOptions": {
        "types": ["node", "jest"]
    }
}

总之,cloudbase-cli 的测试用例写的比 vemo 好。

集成测试

持续继承测试我们借助 https://travis-ci.org/ 这个平台,它的工作流程非常简单:

  1. 在它平台上授权 github 仓库的权限,github 仓库下配置 .travis.yml 文件
  2. 每次 commit 推上新代码的时候,travis-ci 平台都会接收到通知
  3. 读取 .travis.yml 文件,然后创建一个虚拟环境,来跑配置好的脚本(比如启动测试脚本)

它的优点在于,测试代码推上去后,直接在账号下的控制台就能看到测试结果,非常方便;而且可以在配置文件中,指明多个测试环境,比如 node 有 6、8、10,让测试更具有信服力。

我把样例代码放在了 try-travis-ci 仓库下,可以跑一下看看。下面是 .travis.yml 文件内容。

代码语言:javascript
复制
sudo: false
language: "node_js"
node_js:
    - "8"
    - "10"
install:
    - npm install
script: npm run test

看见了吗,就是下面贼酷炫的界面,登陆用户就能看到了:

image.png
image.png

覆盖率统计

覆盖率统计也很简单(本来以为会很难),但是要安装 coveralls 这个库。除此之外,还要修改一下 package.json 中的 scripts 的指令。通过管道,将结果交给 coveralls。

代码语言:javascript
复制
{
    "scripts": {
        "test": "jest --passWithNoTests --coverage --env=node --detectOpenHandles --coverageReporters=text-lcov | coveralls"
    }
}

后来发现,在统计覆盖率的时候,会把覆盖的信息放在根目录下的 coverage 文件夹下,这些信息都是多个平台约定好的数据格式。所以各个工具间可以共同使用。

剩下要做的就是,登陆 coveralls.io 平台,授权 github 仓库权限。当你在 travis 平台运行上述 scripts 脚本时候,它就自动把结果扔到了 coveralls.io 平台。登陆账号,就能看到覆盖率了。

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接入 TypeScript
  • 集成测试
  • 覆盖率统计
  • 参考资料
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档