断言库chai的用法

作者: tiancai啊呆 | 来源:发表于2018-01-05 19:52 被阅读941次

工作中经常需要自己写单元测试,而写单元测试除了掌握测试框架,还必须掌握断言库的用法。现就断言库chai的用法作以总结。chai有三种断言风格供我们使用,expectshouldassert。本文只介绍expect风格的断言用法。

  • 综述
    expect断言的写法都是一样的。头部是expect方法,尾部是断言方法,比如equal、a/an、ok、match等。两者之间使用toto.be连接。
  • 关于类型判断
    我们可以对js中各种数据类型进行判断,包括常见的数字,字符串,布尔值,对象,数组,函数及ES6新增的数据类型。
    代码如下:
    expect('foo').to.be.a('string');
    expect(false).to.be.a('boolean');
    expect(12).to.be.a('number');
    expect(null).to.be.a('null');
    expect(undefined).to.be.a('undefined');
    expect({}).to.be.a('object');
    expect([]).to.be.a('array');
    expect(Math.cos).to.be.a('function');
    expect(new Error).to.be.a('error');
    expect(/123/).to.be.a('regexp');
  • 关于严格相等
    对于基本类型的数据,我们使用equal方法来判断是否相等,对于引用类型的数据,我们有两种方法来判断是否相等。一是使用eql来判断是否相等,二是在equal前加上deep即可。
    代码如下:
    expect(1).to.equal(1);
    expect('foo').to.equal('foo');
    expect(true).to.equal(true);
    expect(null).to.equal(null);
    expect(undefined).to.equal(undefined);
    expect({a: 1}).to.eql({a: 1});
    expect([1, 2]).to.eql([1, 2]);
    expect([1, 2]).to.deep.equal([1, 2]);

除此之外,对于一些常见的值,有一些简写的语法。

    expect(false).to.be.false;
    expect(true).to.be.true;
    expect(null).to.be.null;
    expect(undefined).to.be.undefined;
    expect(NaN).to.be.NaN;

不建议使用简写语法。

  • 关于长度
    代码如下:
    expect([1, 2, 3]).to.have.lengthOf(3);
    expect('foo').to.have.lengthOf(3);
    expect([]).to.have.lengthOf(0);
    expect('').to.have.lengthOf(0);

对于长度为0,我们也有简写语法,但不建议使用。

    expect([]).to.be.empty;
    expect('').to.be.empty;
  • 关于包含
    代码如下:
    expect('foobar').to.include('foo');
    expect([1, 2, 3]).to.include(2);
    expect('foobar').to.match(/^foo/);
    expect({a: 1}).to.have.property('a');
    expect({a: 1, b: 2}).to.have.all.keys('a', 'b');
    expect({a: 1, b: 2}).to.have.all.keys(['a', 'b']);
    expect({a: 1, b: 2}).to.have.any.keys('a');

以上就是断言库chai的一些常用方法,还有一些其他的方法,但是官方不建议使用,掌握这些就已经足够我们写单元测试了。

相关文章

  • 断言库chai的用法

    工作中经常需要自己写单元测试,而写单元测试除了掌握测试框架,还必须掌握断言库的用法。现就断言库chai的用法作以总...

  • chai断言库

    chai简介 chai.js 是一套TDD(测试驱动开发)/BDD(行为驱动开发)的断言库。包含有3个断言库支持B...

  • 单元测试

    前端单元测试的主要框架有 Mocha 和 Jasmine,断言库有 should、 chai、expect 以及n...

  • vue单元测试Mocha + Chai + Vue-Test-U

    一、定义 Mocha:定义JavaScript测试模块的测试框架。作用是:配合chai断言库,运行测试脚本进行单元...

  • 断言库与chai.js

    断言是什么?一般情况下可以理解为一个表达式的结果是否为真,如果为假则抛出异常或者自定义这个失败测试用例。 常见的断...

  • mocha测试框架初学

    环境部署 创建一个目录: 初始化项目,生成package.json文件 安装mocha及其断言库chai 为了使用...

  • typescript 使用 mocha 进行单元测试

    本篇文章记录一下之前在 ts 项目中引入 mocha 的过程,使用 chai 作为断言库、sinon 作为 moc...

  • 几种断言库的区别

    在我们使用mocha进行测试的时候,会结合断言库去使用,经常一起使用的是chai,但是还有assert,expec...

  • vue-cli单元测试mocha+chai+Vue Test U

    vue-cli创建项目后,项目中会有例子的单元测试文件,只有在上面修改即可。 chaijs chai是断言库,简单...

  • 关于js方法的单测

    基于封装的js方法库,了解了chai.js断言库以及Mocha测试框架,下面我简单介绍记录一下,以方便自己回顾。 ...

网友评论

    本文标题:断言库chai的用法

    本文链接:https://www.haomeiwen.com/subject/kjksnxtx.html