Mocha 是一个 JavaScript 测试框架,它支持在浏览器和 Node.js 中运行测试用例。Mocha提供了一组强大的API来编写测试代码,并使用断言(assertion)来验证代码行为。本文将介绍 Mocha 常用断言 API,帮助你编写高质量的测试代码。
什么是断言?
在编写测试代码时,需要验证代码是否按照设计预期执行。这种验证行为通常被称为断言。断言是一个条件,用于测试代码的输出或行为是否符合预期。如果代码满足断言条件,测试通过,否则测试失败。
常用的 Mocha 断言 API
Mocha 支持各种类型的断言 API,包括 assert、should 和 expect。其中 assert 是 Node.js 自带的一个模块,而 should 和 expect 则是由第三方库提供的 API。
assert API
assert 断言用于验证一个条件是否为真。如果条件为假,则抛出一个 AssertionError 异常。assert API 具有很多方法来测试不同类型的条件:
assert.equal(actual, expected, [message])
assert.equal() 用于比较两个值是否相等。如果两个值不相等,则抛出异常。比较过程使用 == 运算符实现。
const assert = require('assert'); assert.equal(1 + 2, 3);
assert.notEqual(actual, expected, [message])
assert.notEqual() 用于比较两个值是否不相等。如果两个值相等,则抛出异常。比较过程使用 != 运算符实现。
const assert = require('assert'); assert.notEqual(1 + 2, 4);
assert.strictEqual(actual, expected, [message])
assert.strictEqual() 用于比较两个值是否全等。如果两个值不全等,则抛出异常。比较过程使用 === 运算符实现。
const assert = require('assert'); assert.strictEqual('Hello', 'Hello');
assert.notStrictEqual(actual, expected, [message])
assert.notStrictEqual() 用于比较两个值是否不全等。如果两个值全等,则抛出异常。比较过程使用 !== 运算符实现。
const assert = require('assert'); assert.notStrictEqual(1 + 2, '3');
assert.deepEqual(actual, expected, [message])
assert.deepEqual() 用于比较两个对象的值是否相等。如果两个对象的值不相等,则抛出异常。
const assert = require('assert'); assert.deepEqual({x:1}, {x:1});
assert.notDeepEqual(actual, expected, [message])
assert.notDeepEqual() 用于比较两个对象的值是否不相等。如果两个对象的值相等,则抛出异常。
const assert = require('assert'); assert.notDeepEqual({x:1}, {y:1});
should API
should API 是由 should.js 提供的一组断言函数。它使得我们可以以自然语言的方式编写测试代码。
const should = require('should'); (1 + 2).should.equal(3);
should API 的另一个特点是可以在对象上链式使用,形成一句自然语言式的表达:
const user = { name: 'tianfang', password: '123456' }; user.should.have.property('name', 'tianfang').and.have.property('password', '123456');
expect API
除了 should API 之外,expect API 是另一个流行的断言库,它为测试提供了许多断言函数:
expect(value)
expect() 接受一个值作为参数,并返回一个包装器对象,该对象具有各种被称为断言器的函数和链式调用方法。最后,调用 to 或 not.to 可以迫使断言成为真或假。
const expect = require('chai').expect; expect(1 + 2).to.equal(3);
expect(value).to.be.a(type)
expect().to.be.a(type) 确保给定值是期望的类型。
const expect = require('chai').expect; expect('hello').to.be.a('string'); expect({}).to.be.a('object');
expect(value).to.be.true / expect(value).to.be.false
expect().to.be.true 和 expect().to.be.false 用于验证一个值是 true 或 false。
const expect = require('chai').expect; expect(true).to.be.true; expect(false).to.be.false;
总结
断言是测试代码的关键部分。Mocha 支持多种断言 API,包括 assert、should 和 expect。选择一个最适合您的需求的 API 是重要的。无论哪种 API,都应该在测试函数中轻松完成,有助于准确和可维护的测试代码。
以上便是本文介绍的 Mocha 常用断言 API,希望能对前端工程师在编写测试代码时有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cf2d46b5eee0b525699484