1. 什么是 jshamcrest?
jshamcrest 是基于 Java 中 Hamcrest 所开发的一个 JavaScript 测试工具库。Hamcrest 是一种类似伪代码的东西,它可以帮助你构建能够自然地表达你测试期望值的测试用例。它包含了一系列“matcher”(匹配器),可以轻松地进行断言测试,通过使用这些 matcher,我们可以在测试代码中表现得像自然语言一样,使得代码更加易于理解。
jshamcrest 是基于这个概念,为 JavaScript 开发者提供了一套很好用的“matcher”集合。
2. 如何使用 jshamcrest?
在使用 jshamcrest 之前,你需要先安装它,可以通过 npm 的命令来安装:
npm install jshamcrest --save-dev
然后在你需要的测试文件中引入 jshamcrest:
const jsc = require('jshamcrest').JsHamcrest;
现在你就可以在测试文件中使用 jshamcrest 提供的 matcher 来判断测试期望值是否符合你预期的值了。
3. jshamcrest 的 matcher 集合
jshamcrest 提供了一系列不同的 matcher,这些 matcher 可用于比较布尔值、数字、数组、字符串和对象等。下面我会列举一部分 matcher 的使用方法,更多 matcher 的详细介绍请到官网查看。
3.1 布尔值比较 matcher
Matcher | 描述 |
---|---|
equalTo(false) |
判断实际值是否等于 false |
equalTo(true) |
判断实际值是否等于 true |
示例代码:
const jsc = require('jshamcrest').JsHamcrest; describe('Boolean Matcher Test cases', () => { it('It should test whether boolean values are equal or not', () => { expect(true).toAssert(jsc.equalTo(true)); expect(false).toAssert(jsc.equalTo(false)); }); });
3.2 数字比较 matcher
Matcher | 描述 |
---|---|
greaterThan(n) |
判断实际值是否大于 n |
greaterThanOrEqualTo(n) |
判断实际值是否大于等于 n |
lessThan(n) |
判断实际值是否小于 n |
lessThanOrEqualTo(n) |
判断实际值是否小于等于 n |
示例代码:
-- -------------------- ---- ------- ----- --- - --------------------------------- ---------------- ------- ---- ------- -- -- - ------ ------ ---- ------- --- ------ -- ------- ---- -- ----- -- --- -- -- - -------------------------------------------------- --- ------ ------ ---- ------- --- ------ -- ---- ---- -- ----- -- --- -- -- - ----------------------------------------------- --- ------ ------ ---- ------- --- ------ -- ----- -- --- -- -- - ------------------------------------- --- ---
3.3 数组比较 matcher
Matcher | 描述 |
---|---|
hasItemInArray(item) |
判断实际数组中是否包含 item |
hasItemsInArray(item1, item2, ...) |
判断实际数组中是否包含 item1, item2... |
containsInAnyOrder(item1, item2, ...) |
判断实际数组是否包含在任意顺序中的 items 数组 |
示例代码:
-- -------------------- ---- ------- ----- --- - --------------------------------- --------------- ------- ---- ------- -- -- - ------ ------ ---- ------- --- ----- -------- ----- ------ -- -- - ---------- -- ------------------------------------ --- ------ ------ ---- ------- --- ----- -------- ---- ---- --- ------ -- -- - ----------- --- ------------------------------------- ----- --- ------ ------ ---- ------- --- ------ -------- ----- -- --- ------- -- -- - ---------- -- -------------------------------------- -- ---- --- ---
3.4 对象比较 matcher
Matcher | 描述 |
---|---|
equalToObject(object) |
判断实际对象是否等于 object |
hasProperty(propertyName) |
判断实际对象中是否包含 propertyName 属性 |
hasProperties(properties) |
判断实际对象是否包含 properties 中的所有属性 |
示例代码:
-- -------------------- ---- ------- ----- --- - --------------------------------- ---------------- ------- ---- ------- -- -- - ------ ------ ---- ------- ----- ------- --- ----- -- ----- -- -- - -------- ----- ------ ---- -- ------------------------------- ----- ------ ---- -- ---- --- ------ ------ ---- ------- ------ ------- ----- ---------- -- -- - ----- --- - - ----- ------ ---- -- -- ---------------------------------------------- --------------------------------------------- --- ------ ------ ---- ------- --- ------ -------- --- ----- ------------ -- -- - ----- --- - - ----- ------ ---- -- -- ---------------------------------------- ----- ----- ---- --- ---
4. 总结:
在本文中,我们介绍了 jshamcrest 这个测试工具库,并且详细讲解了如何使用它。我们也了解了这个库提供的 matcher 集合,以及针对布尔值、数字、数组、字符串和对象等数据类型的 matcher 使用方法。
使用 jshamcrest 可以使得你的测试代码更加易于理解和维护,让你更加专注于测试场景的构建和测试数据的准备,从而提高测试效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/73252