chai.js 断言库使用说明 (Expect 风格写法)
简介
Chai.js 是一个非常流行的 JavaScript 断言库,主要用于配合如 Mocha, Jest 等测试框架编写用户端或服务端的 JavaScript 测试。它提供了 BDD(Behavior-Driven Development,行为驱动开发) 和 TDD(Test-Driven Development,测试驱动开发)两种样式的断言,即 expect,should, assert 三种。
expect 和 should 属于 BDD 风格,他们都是链式语法,所不同的是 expect 是直接调用,而 should 则是添加在任何 JavaScript 对象上,他们的使用场景都是 BDD。
1 | expect(true).to.be.true; |
1 | true.should.be.true; |
assert 是 TDD 风格,它看起来更像一个函数。
1 | assert(true, "True is true"); |
Chai 的主要优点是其易于使用和灵活性。它支持插件,并且对多种环境有良好的兼容性,包括 Node.js, 浏览器, 和各种 JavaScript 构建工具(如 Browserify, Webpack)。
通过使用不同类型的断言,你可以选择适合你测试风格的类型。对于更复杂的用例,Chai 提供了友好的错误消息,帮助你快速理解测试失败的原因。
Expect 风格写法
以下指南介绍了如何使用 Expect 风格编写各种类型的断言。
引入 Expect
在测试文件头部,使用 ES6 模块导入语法引入 Chai 库的 Expect 风格:
1 | import { expect } from "chai"; |
等于
检查两个值是否相等:
1 | expect("hello").to.equal("hello"); |
深度相等
如果你要检查两个对象或数组的值是否相同:
1 | expect({ foo: "bar" }).to.deep.equal({ foo: "bar" }); |
包含
例子:检查数组是否包含某个元素或字符串包含一段字串:
1 | expect([1, 2, 3]).to.include(2); |
大于、大于等于、小于、小于等于
1 | expect(10).to.be.above(5); |
判断属性是否存在
检查对象中是否存在某个属性:
1 | expect({ a: 1 }).to.have.property("a"); |
包含键
假设你要检查一个对象是否包含一个或者多个键:
1 | expect({ a: 1, b: 2, c: 3 }).to.include.keys("a", "b"); |
类型
检查值的类型:
1 | expect("test").to.be.a("string"); |
不为空
检查一个值是否为空
1 | expect("Hello").to.not.be.empty; |
类型和类型的属性
希望类型是某个特定的结构的时候可以用property和a或an联合使用。
1 | expect({ tea: { temperature: "hot", name: "chai" } }) |
用’.throw’测试可能出错的函数
假设你测试一个可能抛出错误的函数,你可以使用 throw 结构:
1 | let badFn = function () { |
其他
这只是 Chai.js Expect 风格断言更多的用法教程,详细信息请参考 Chai.js Expect API 文档。
注
无
参考
无
chai.js 断言库使用说明 (Expect 风格写法)