资讯专栏INFORMATION COLUMN

单元测试学习总结

netScorpion / 2451人阅读

摘要:通过添加一个回调函数通常命名为给方法,就会知道,它应该等这个函数被调用的时候才能完成测试。此外提供了一些钩子函数和。这些钩子函数可以用于设置测试的先决条件或者对测试进行清理。钩子函数会按照它们被定义的顺序运行。

Mocha 的安装和使用 1. 安装

使用npm全局安装:

     npm install -g mocha

安装Mocha >= v3.0.0,npm的版本应该>=v1.4.0。除此,确保使用Node.js的版本>=v0.10来运行Mocha

2.简单的例子

https://github.com/xzq8/exerc...

先fork代码到自己仓库,然后clone下来。安装依赖:

    git clone url
    npm i 
    npm test(package.json中的script) // 执行mocha

使用nodejs的断言assert, 下面是一个最基本的例子:
···

var assert = require("assert")

describe("Array", function() {
  describe("#indexOf()", function() {
    it("should return -1 when the value is not present", function() {
      assert.equal(-1, [1, 2, 3].indexOf(5)/* 填空题 */)
    })
  })
})

···

-了解 Node assert 的用法 文档http://nodejs.cn/api/assert.html

    assert.deepStrictEqual(actual, expected[, message])   // 判断深度 {a:{a:1}} == {b:{c:1}}}
    assert.strictEqual(actual, expected[, message])   // 判断相等 === 
    assert.notStrictEqual(actual, expected[, message]) //判断不等 === 
    assert.ok(value[, message])   // 是否为真  
    assert.throws(()=>{
        throw new Error(error)
      },Error,"不符合预期的错误")   // 抛出错误

以上是几个常用的assert 断言。

异步的代码如何使用断言呢?

    describe("jquery", function() {
        describe("异步断言测试", function() {
            it("异步需要执行回调done()", function() {
                $.ajax({
                    url:"a.html",
                    success:function(){
                        done();
                    }
                })
            })
        })
    })

使用mocha测试异步代码是再简单不过了。只需要在测试完成的时候调用一下回调函数即可。通过添加一个回调函数(通常命名为done)给it()方法,Mocha就会知道,它应该等这个函数被调用的时候才能完成测试。

此外Mocha提供了一些钩子函数:before(),after(),beforeEach()和afterEach()。这些钩子函数可以用于设置测试的先决条件或者对测试进行清理。

    describe("hooks", function() {
    before(function() {
        // 在这个区块内的所有测试之前运行
    })
    after(function () {
        // 在这个区块内的所有测试之后运行
    })
    beforeEach(function () {
        // 在这个区块内的每个测试运行之前运行
    })
    afterEach(function () {
        // 在这个区块内的每个测试之后运行
    })
})

测试可以出现在before,after或者和你的钩子函数交替出现。钩子函数会按照它们被定义的顺序运行。一般就是,before()(只运行一次)->beforeEach()->afterEach()->after()(只运行一次)。

mocha的命令的基本选项:

Options:

    -h, --help                  输出帮助信息
    -V, --version               输出mocha的版本号
    -A, --async-only            强制所有的测试用例必须使用callback或者返回一个promise的格式来确定异步的正确性
    -c, --colors                在报告中显示颜色
    -C, --no-colors             在报告中禁止显示颜色
    -g, --growl                 在桌面上显示测试报告的结果
    -O, --reporter-options   设置报告的基本选项
    -R, --reporter        指定测试报告的格式
    -S, --sort                  对测试文件进行排序
    -b, --bail                  在第一个测试没有通过的时候就停止执行后面所有的测试
    -d, --debug                 启用node的debugger功能
    -g, --grep         用于搜索测试用例的名称,然后只执行匹配的测试用例
    -f, --fgrep         只执行测试用例的名称中含有string的测试用例
    -gc, --expose-gc            展示垃圾回收的log内容
    -i, --invert                只运行不符合条件的测试用例,必须和--grep或--fgrep之一同时运行
    -r, --require         require指定模块
    -s, --slow              指定slow的时间,单位是ms,默认是75ms
    -t, --timeout           指定超时时间,单位是ms,默认是200ms
    -u, --ui              指定user-interface (bdd|tdd|exports)中的一种
    -w, --watch                 用来监视指定的测试脚本。只要测试脚本有变化,就会自动运行Mocha
    --check-leaks               检测全局变量造成的内存泄漏问题
    --full-trace                展示完整的错误栈信息
    --compilers :,...  使用给定的模块来编译文件
    --debug-brk                 启用nodejs的debug模式
    --es_staging                启用全部staged特性
    --harmony<_classes,_generators,...>     all node --harmony* flags are available
    --preserve-symlinks                     告知模块加载器在解析和缓存模块的时候,保留模块本身的软链接信息
    --icu-data-dir                          include ICU data
    --inline-diffs              用内联的方式展示actual/expected之间的不同
    --inspect                   激活chrome浏览器的控制台
    --interfaces                展示所有可用的接口
    --no-deprecation            不展示warning信息
    --no-exit                   require a clean shutdown of the event loop: mocha will not call process.exit
    --no-timeouts               禁用超时功能
    --opts                定义option文件路径 
    --perf-basic-prof           启用linux的分析功能
    --prof                      打印出统计分析信息
    --recursive                 包含子目录中的测试用例
    --reporters                 展示所有可以使用的测试报告的名称
    --retries            设置对于失败的测试用例的尝试的次数
    --throw-deprecation         无论任何时候使用过时的函数都抛出一个异常
    --trace                     追踪函数的调用过程
    --trace-deprecation         展示追踪错误栈
    --use_strict                强制使用严格模式
    --watch-extensions ,... --watch监控的扩展 
    --delay                     异步测试用例的延迟时间

更多mocha 相关参考 《https://segmentfault.com/a/11...》 里面介绍的比较详细。

should.js的使用

在test目录添加mocha.opts文件:

  --require should  // mocha在执行的时候回引入shouldjs

sholdjs的常用的几个:

    a.should.equal(b)  //判断相等
    (5).should.be.exactly(5).and.be.a.Number()   // 
    should.throws(block, [error], [message])  // 捕获错误

具体更多断言参考 http://shouldjs.github.io/

接入travis Ci
打开 : 
登录GitHub账号 授权

在项目根目录添加.travis.yml文件

    language: node_js   //执行的语言
    node_js: 
      - "8.9.4"         // 版本
    before_script:      // 钩子 有before 肯定就有after 
      - npm install -g mocha

这样当你提交代码之后 travis就会自动运行测试 发送报告到你的邮箱

karma 的基本使用

参考 《https://www.jianshu.com/p/66d...》

个人理解就是把我们测试过程中编写的测试用例,通过它调用浏览器来运行这些测试用例,然后再汇集测试结果,生成测试报告!

需要注意的就是 travis 的虚拟机没有chrome ,所以需要进行配置

    language: node_js
    node_js:
      - "8.9.4"
    before_script:
      - npm install -g karma-cli
      - "export DISPLAY=:99.0"
      - "sh -e /etc/init.d/xvfb start"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102961.html

相关文章

  • 通过demo学习OpenStack开发所需的基础知识 -- 单元测试

    摘要:本文将进入单元测试的部分,这也是基础知识中最后一个大块。本文将重点讲述和中的单元测试的生态环境。另外,在中指定要运行的单元测试用例的完整语法是。中使用模块管理单元测试用例。每个项目的单元测试代码结构可 本文将进入单元测试的部分,这也是基础知识中最后一个大块。本文将重点讲述Python和OpenStack中的单元测试的生态环境。 单元测试的重要性 github上有个人画了一些不同语言的学...

    douzifly 评论0 收藏0
  • 慕课网_《SpringBoot进阶之Web进阶》学习总结

    摘要:时间年月日星期日说明本文部分内容均来自慕课网。慕课网教学示例源码个人学习源码第一章课程介绍课程介绍本课程紧接着小时学会课程,请先看入门课。异常返回通知在连接点抛出异常后执行。 时间:2017年3月19日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:htt...

    lifefriend_007 评论0 收藏0
  • PHP单元测试框架PHPUnit的使用

    摘要:以前在学习开发时有专门写过的单元测试的文章,开发学习之单元测试,今天再总结下怎么在中使用单元测试。是一个用编程语言开发的开源软件,是一个单元测试框架。单元测试框架经常会包含每个测试的报告,以及给出你已经覆盖到的代码覆盖率。 以前在学习IOS开发时有专门写过Objective-C的单元测试的文章,IOS开发学习之单元测试,今天再总结下怎么在PHP中使用单元测试。 一、前言 在这篇文章中,...

    Bryan 评论0 收藏0
  • 业务开发中的调试方法总结

    摘要:业务开发中的调试方法总结这段时间,接触了单元测试,同时业务中遇到了一些需要排错调试的情况,就把自己的经验做个小结。但是如果你的业务经常变化,但是变化的部分并不会影响单元测试,那这种情况下的单元测试性价比就很高。 业务开发中的调试方法总结 这段时间,接触了单元测试,同时业务中遇到了一些需要排错调试的情况,就把自己的经验做个小结。 3种调试方法 狼叔说,常见的三种调试的境界 初级: 打l...

    KaltZK 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<