Chai 2.2.0 发布,奇怪的 hook 改变完全移除

阅读时长 4 分钟读完

Chai 是一款流行的 JavaScript 测试框架,在前端开发领域有着广泛的应用。近日,Chai 发布了新版 2.2.0,其中最显著的更新是完全移除了奇怪的 hook 改变功能。接下来,本文将详细介绍这个功能以及其被移除的原因,以及一些建议和指导。

奇怪的 hook 改变功能是什么?

hook 改变功能是 Chai 提供的一项功能,可以通过修改某些 hook 来影响断言行为。这项功能在 Chai 的早期版本中得到了广泛的应用,例如:

-- -------------------- ---- -------
---------------------------------------
-------------------------------------------

------------- - -------------------
------------- - -------------------

----------------- ------ ------ -
  --- --------- - ---------------
  ------------------------------- -------- -- -
    --------- -- --
    ------ -----
  ---
---

----------------------------
----------------------------------------

这些例子中修改了 equals 和 notEquals 的行为,创建了自己的插件来增强 Chai 的功能,以及通过自定义的方法实现了一些特殊的断言行为。

为什么要移除它?

然而,这些技巧在实践中可能出现一些问题,例如:

  • 修改行为可能出现意外的副作用,导致代码难以理解和维护;
  • 插件可能引入副作用,导致测试结果不可再现或产生错误;
  • 自定义的方法可能与已有的方法冲突,导致使用者困惑。

这些问题可能在 Chai 的使用者之间产生混乱和不良后果,因此 Chai 开发团队决定完全移除 hook 改变功能,以提高框架的稳定性和一致性。

更好的做法是使用 Chai 的插件系统和自定义方法来实现特殊的断言行为,例如:

-- -------------------- ---- -------
----------------- ------ ------ -
  ------------------------------------ -------- -- -
    ---------------- --------- ------
  ---
  --------------------------------- -------- ------ -
    -- ---------- --- ------- - ----- -
      --- --- - --------- ------- -- --- ----- -- - - -----
      ------------------ ---- ---- ------
    -
  ---
---

----------------------------
----------------------------------------

------------------ ---------------------------------
------------------ -----------------------------

如何从旧版本升级?

如果你正在使用 Chai 的 hook 改变功能,可以使用以下代码升级到新版:

其中 name 是要改变的方法或属性的名称,overwrite 是新的实现。例如:

-- -------------------- ---- -------
--------------------------------------- -------- -------- -
  ------ -------- ------- -
    ----------------- -------
    ------------------ ---------- - - -------
  --
---

---------------------------------------

-- -------
-- ----- ---------- -----

总结

Chai 2.2.0 发布了,其中最显著的更新是完全移除了 hook 改变功能。虽然这项功能在早期版本中得到了广泛的应用,但也带来了一些问题,因此 Chai 开发团队决定移除它。如果你正在使用 hook 改变功能,可以使用新的插件系统和自定义方法来实现相同的效果。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fe047895b1f8cacdd0f412

纠错
反馈