前言
在前端开发中,测试是必不可少的一环。而断言库则是测试中最重要的一环。Chai 断言库是目前最流行的断言库之一,简洁易用且功能强大。其中,expect、assert、should 是 Chai 断言库中的三种不同风格的断言方式,本文将详细介绍它们的区别。
expect
expect 风格的断言方式,是 Chai 中最为流行的风格。它使用链式调用的方式,从而使代码更为简洁易懂。例如:
----- - ------ - - ---------------- ----------------- ---------- - ---------------------- ---------- - ---------- ------ -- ---- --- ----- -- --- --------- ---------- - ---------- -- ---------------------------- --- --- ---
从例子中可以看到,expect 方法直接调用,不需要传递任何参数。而在其后,通过 to 或其它关键字,来表示期望值的一系列属性,如 equal、not、deep、include 等。例如,上例中的 to.equal(-1),表示我们期望其返回值为 -1。同时,可以通过链式调用,实现多个期望值的校验。
assert
assert 风格的断言方式,与 expect 风格很相似,主要的区别在于调用方式不同。assert 风格是直接调用具体的断言函数,例如:
----- ------ - ----------------------- ----------------- ---------- - ---------------------- ---------- - ---------- ------ -- ---- --- ----- -- --- --------- ---------- - ---------------- -- -------------- ---- --- --- ---
从上例中可以看到,assert 断言方式需要通过调用具体的断言方法来实现期望值的校验。其相对于 expect 风格的优点在于,在不使用链式调用时,能够更准确的定位问题。
should
should 风格的断言方式,与 expect 风格相似,但相对而言较为冗长。其实现方式是通过将期望值直接作为对象的属性来实现。例如:
----- ------ - ------------------------- ----------------- ---------- - ---------------------- ---------- - ---------- ------ -- ---- --- ----- -- --- --------- ---------- - --- -- ------------------------------- --- --- ---
从例子中可以看到,should 断言方式相对于 expect 风格而言,语义更为明确,同时使代码更加清晰。不过需要注意的是,should 会扩展 Object.prototype,因此可能会影响到全局环境。
结论
综上所述,Chai 断言库中的 expect、assert、should 风格,各具特点,用法灵活。因此,在实际工作中,我们需要深入理解其特点,并根据具体的场景选择合适的风格。最后推荐大家在使用 Chai 断言库时,参考官方文档,结合实际场景灵活使用。
示例代码
----- - ------ - - ---------------- ----- ------ - ----------------------- ----- ------ - ------------------------- -------------- ---- -------------------- ----- ---------- - ---------- --------- ---------- - ---------- -- ---------------------------- ---------- -- --------------------------------------- ---------- -- -- ------------------------- --- --- ---------- --------- ---------- - ---------------- -- -------------- ---- ------------------ -- ---- ------------------- -- -- --- ----- --- ---------- --------- ---------- - --- -- ------------------------------- --- -- ------------------------------------------ ---- -- -- ----------------------------- --- --- ---
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670dcce65f551281025e703d