作为前端开发人员,我们通常需要使用各种测试库来确保我们的应用程序在各种场景下都能正常工作。在这些测试库中,Chai 是一种非常流行的断言库,因为它提供了简单易懂的断言 API,并且易于扩展。然而,当我们开始使用 Chai 时,我们可能会发现有三种主要的语法:expect、should 或 assert。那么,在这三种语法之间,您应该如何决定使用哪种呢?本文将探讨这个问题,并为你提供一些指导意义。
Chai 语法介绍
在开始讨论之前,我们先来回顾一下三种 Chai 语法的主要特征:
Expect
Expect 语法是 Chai 的最新版本,它提供了一种自然语言形式的 API,使得断言的语句非常易于理解。
下面是一个简单的 expect 断言的示例:
expect(value).to.exist; expect(value).to.be.true; expect(value).to.be.a('string'); expect(value).to.have.lengthOf(3); expect(value).to.include('hello');
Should
Should 语法是 Chai 的第一个版本,它使用了能够扩展 Object.prototype 的 getter 命令来使得每个对象都有这些断言。应该注意的是,使用 should 语法时,你需要先执行一次 require('chai').should() 来激活这个 API。
下面是一个简单的 should 断言的示例:
value.should.exist; value.should.be.true; value.should.be.a('string'); value.should.have.lengthOf(3); value.should.include('hello');
Assert
Assert 语法是 Node.js 内置的断言库,也是 Chai API 中最基本的一种。它使用 Node.js 断言库的语法,因此有点不太易用。
下面是一个简单的 assert 断言的示例:
assert.ok(value); assert.strictEqual(value, true); assert.strictEqual(typeof value, 'string'); assert.strictEqual(value.length, 3); assert.include(value, 'hello');
如何选择合适的语法
从上面的介绍中,我们可以看出,Chai 的三种语法都可以用于我们的测试用例。但是,当我们需要选择一种特定的语法时,必须考虑一些重要因素:
可读性
比较各种语法的可读性,通常 expect 语法是最容易理解的,因为它已经非常接近自然语言了。此外,expect 语法的错误提示信息也是最好的。但是,如果你喜欢在你的测试代码中使用一种类自然语言的风格,也可以考虑 should 语法。
相反,assert 语法是最不易读的,因为它使用的是 Node.js 内置断言库的语法,这可能使得测试代码更难理解。
可扩展性
Chai 的 expect 语法是最易于扩展的,因为它提供了许多钩子,可以很容易地定制你自己的断言。类似地,should 语法也是可扩展的,但是这需要你更加熟悉 Object.prototype 的 getter 命令。
相反,虽然 assert 语法也提供了一些钩子,但它们的功能非常有限,而且很少使用。因此,如果你需要一个灵活可扩展的断言库,请选择 expect 语法。
专业水平
最后,选择合适的 Chai 语法应该考虑你的专业水平。如果你是一个初级开发人员,你可能会发现 expect 语法的自然语言风格更容易理解。相反,如果你是一个有多年经验的开发人员,你可能更喜欢用 assert 语法,因为它更接近 Node.js 内置的 assert 库。
示例代码
下面是一个使用 expect 语法的示例代码:
-- -------------------- ---- ------- ----- ------ - ----------------------- ------------ --------- -- -- - ---------- -- --------- --------- -- -- - ----- ------ - -------------- ------------------------ -------------------------- --------------------------------- ----------------------------------- ----------------------------------- --- ---
下面是一个使用 should 语法的示例代码:
-- -------------------- ---- ------- ----- ------ - ------------------------- ------------ --------- -- -- - ---------- -- --------- --------- -- -- - ----- ------ - -------------- -------------------- ---------------------- ----------------------------- ------------------------------- ------------------------------- --- ---
下面是一个使用 assert 语法的示例代码:
-- -------------------- ---- ------- ----- ------ - ----------------------- ------------ --------- -- -- - ---------- -- --------- --------- -- -- - ----- ------ - -------------- ------------------ -------------------------- ------ ------------------------- ------- ---------- --------------------------------- --- ---------------------- --------- --- ---
结论
在选择合适的 Chai 语法时,请考虑可读性、可扩展性和专业水平等因素。如果可读性最重要,请选择 expect 语法。如果可扩展性最重要,请选择 expect 或 should 语法。如果你钟情于 Node.js 内置的述句方式,请选择 assert 语法。根据不同的场景选择适合自己的语法才是最好的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677356136d66e0f9aae20e6e