Chai 是一个流行的 JavaScript 测试框架,它提供了一系列的 assert 函数来帮助我们编写测试代码并进行断言。在使用 Chai 进行测试时,熟悉 Chai 的 API 是非常必要的,因为它能够帮助我们更快地编写测试代码,更快地定位错误。
本文将为大家提供 Chai 的 API 速查表,帮助大家在最短的时间内了解所有的断言方法,从而更好地掌握 Chai 的使用方法。
Chai 的 expect 断言
expect 函数是 Chai 中最常用的断言方法之一。它的语法如下:
expect(actual).to.[not].<chainable-assertion>(expected);
其中,actual 表示我们要进行断言的实际值,expected 表示我们期望的值。同时,to 和 not 是语言修饰符,<chainable-assertion> 是 Chai 中的可链式断言方法。
以下是一些常用的可链式断言方法:
1. equal / equals
equal / equals 方法用于判断两个实际值是否相等。其中,equal 方法使用的是 JavaScript 严格相等操作符(===),equals 方法使用的是深度相等操作。
expect(1 + 1).to.equal(2); expect([1, 2, 3]).to.deep.equal([1, 2, 3]);
2. be / been
be / been 方法用于比较实际值和期望值的类型以及引用。
expect('hello').to.be.a('string'); expect(myObj).to.have.been.calledOnce; // 用于 Sinon.js 的 spy 对象
3. ok / true
ok / true 方法用于确定实际值为真。
expect(true).to.be.ok;
4. not
not 方法可以用于否定前面的断言,以便进行逆向断言。
expect(foo).to.not.equal('Eve');
5. include / includes / contain
include / includes / contain 用于检查是否包含某个元素。
expect([1, 2, 3]).to.include(2); // .includes 和 .contain 同理 expect('hello world').to.include('world');
6. empty
empty 方法用于确定数组或对象是否为空。
expect([]).to.be.empty; expect({}).to.be.empty;
Chai 的 assert 断言
assert 函数是最基础的 Chai 断言方法,它的语法如下:
assert.<method>(actual, expected, [message]);
其中,<method> 表示不同的方法名称。以下是一些常用的断言方法:
1. equal / notEqual
equal / notEqual 用于比较两个实际值是否相等。
assert.equal(1 + 1, 2); assert.notEqual(1 + 1, 3);
2. strictEqual / notStrictEqual
strictEqual / notStrictEqual 用于比较两个实际值是否严格相等。
assert.strictEqual(1 + 1, 2); assert.notStrictEqual(1 + 1, '2');
3. deepEqual / notDeepEqual
deepEqual / notDeepEqual 用于比较两个对象是否深度相等。
assert.deepEqual({ foo: 'bar' }, { foo: 'bar' }); assert.notDeepEqual({ foo: 'bar' }, { foo: 'baz' });
4. ok
ok 用于确定实际值是否为真。
assert.ok(true);
Chai 的 should 断言
should 函数是 Chai 中最流行的断言方法之一。should 可以用于添加断言行为到 Object 原型中,从而为所有对象添加能够进行连续调用的 should 和 should.not 方法。以下是 should 的语法:
chai.should();
1. equal / equals
should 中的 equal / equals 方法用于判断两个实际值是否相等。
(1 + 1).should.equal(2); [1, 2, 3].should.deep.equal([1, 2, 3]);
2. true
should 中的 true 方法用于断言一个对象或枚举值是否为真。
true.should.be.true;
3. instanceOf
should 中的 instanceof 方法用于确定对象是否为某个 class 的实例。
var myObj = new MyClass(); myObj.should.be.an.instanceOf(MyClass);
4. exist
should 中的 exist 方法用于确定对象是否存在。
myVar.should.exist;
总结
本文介绍了 Chai 中最常用的三个断言方法:expect、assert 和 should,并且列举了一些常用的断言方法和示例代码。通过本文的学习,读者应该能够更好地了解 Chai 的使用方法,从而更好地编写 JavaScript 测试代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6595225deb4cecbf2d95ba85