npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

unit-test-demo

v1.0.0

Published

A repo about unit test.

Downloads

2

Readme

unit-test-demo

一步一步介绍如何给项目添加单元测试。


OK,你已经来到了第三个环节

上一个环节里我们介绍了如何使用 Karma 来配置测试环境,可以方便的让我们的测试代码在实际浏览器里运行。

这个环节我们会介绍如何配置 Travis-CI ,当我们提交代码的时候可以自动执行测试。

先看结果

配置完成后,当我们 Push 代码,或者提交 Pull Request 时,Travis-CI 会自动执行测试代码。

我们都做了什么?

  1. Travis-ci.com ,通过 Github 账号进行注册并授权。
  2. 你会看到你在 Github 上所有的 repo, 选择其中一个启用 Travis-CI 。
  3. 在项目中添加 .travis.yml 配置文件。比如我们项目中的配置文件为:
# 指定语言 https://docs.travis-ci.com/user/languages/javascript-with-nodejs/
language: node_js
# 缓存 node_modules 文件夹,不需要每次都下载安装全部 npm 包。
cache:
  directories:
    - node_modules
# 指定 node 版本
node_js:
  - "6"
# 只对指定的分支执行构建  https://docs.travis-ci.com/user/customizing-the-build/#building-specific-branches
branches:
  only:
    - master
# 要执行的脚本
script:
  - npm test
# 配置当构建失败的时候发送通知 https://docs.travis-ci.com/user/notifications
notifications:
# 设置 TravisBuddy,每当 Pull Request 构建失败的时候,TravisBuddy 会收到通知
# 同时会将 构建失败的日志 以评论的形式添加到 Pull Request ,方便 PR 的提交者查看错误原因。
  webhooks:
    urls:
      - https://www.travisbuddy.com/
    on_success: never # 构建成功不发送邮件。默认是 change,即默认只有上次失败这次修复的成功构建才会发送邮件
    on_failure: always # 构建失败总是发送邮件。默认就是 always
  1. 之后每次 Push 和 Pull Request 都会自动执行测试。

Travis-CI 是怎么工作的呢?

我们每次 Push 代码的时候,Travis-CI 主要做了两个工作:

  • install: 安装所有的依赖
  • script: 执行构建脚本

如果我们指定了项目语言是 node_js,那么 Travis-CI 默认会使用 npm install 命令安装依赖;同时,默认的构建脚本的命令是:npm test,因此对我们的项目来说,会执行测试代码。

另外,Travis-CI 同时预留了一些钩子比如 before_install, before_script 等可以让我们在 install 和 script 之前或之后执行一些其他工作。感兴趣的可以看下 Travis-CI 的生命周期

配置文件的简单介绍

我们是通过 .travis.yml 告诉 Travis-CI 要做哪些事情,通常 .travis.yml 中配置会包含:

  • 项目所使用的语言;
  • 你希望在构建之前执行哪些命令或者脚本,比如安装依赖;
  • 使用什么命令运行测试代码;
  • 设置邮件等当构建失败时获取相应通知。

在上面的配置文件可以看到,我们还可以指定分支,只对 mater 分支执行构建。具体可以参考这里

关于通知的配置,默认情况下如果构建失败或者上一次构建失败这次构建成功后,会给提交 commit 的作者或者仓库的管理者发送邮件。需要注意,Pull Request 不会触发 Email 通知。

如果你 Push 代码后没有收到邮件通知,你需要检查

  • 邮件是否被拦截进入垃圾邮箱;
  • 你在项目中设置的 git 邮箱是否已经注册 Github 或者已经添加到 Github 的验证邮箱

在上面的通知配置中,我们添加了一个 Webhook 来接收通知。这个 Webhook 是 TravisBuddy ,它会在每次 Pull Request 构建失败收到通知时,将错误日志以评论的方式添加到 PR 中,方便 PR 的提交者查看失败原因。就像下面图片中显示的样子:

同时 TravisBuddy 还会将失败结果通过邮件的形式通知 PR 的发起者,这个配置刚好弥补了,默认状态下 Pull Request 构建失败不会发送邮件的缺点。

注意: 之前 Karma 配置中执行测试的浏览器为 Chrome,当我们启用 Travis-CI 后,Travis-CI 是在虚拟机里执行测试代码的,此时环境没有Chrome 可以运行。因此我们将浏览器改为 PhantomJS(同时记得安装对应的 launcher )

总结

通过注册 Travis-CI 同时给项目添加 .travis.yml 配置文件,我们就可以在每次提交代码时自动执行单元测试,如果构建失败还会将失败结果通知我们。

Travis-CI 还可以做很多事情,想要了解更多有关 Travis-CI 的使用方式,可以自行去 Travis-CI 官网 查看文档。

下一个环节

下一个环节我们会介绍如何如何获得 测试覆盖率