Chai 使用中遇到 AssertionError: expected 'false' to equal false 的解决方法

问题描述

在使用 Chai 进行单元测试的过程中,您可能会遇到以下错误:

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

这是因为在比较值时,Chai 默认使用全等操作符(===),而在此过程中,对于包装类型与其对应的基本类型的比较,将会出现该错误。

解决方法

使用某些 Chai 断言

在 Chai 中,有许多种不同的断言可供您选择。其中,一些断言在比较值时不会使用全等操作符,而是会尝试将包装类型与基本类型进行比较,从而解决上述问题。

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

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

这个例子中,可以看到我们在比较 new Boolean(false) 时使用了不同的断言,导致用全等操作符获得的错误结果被成功避免。

使用 .valueOf() 方法

如果您希望使用默认的全等操作符进行比较,那么您可以手动调用包装类型的 .valueOf() 方法,将包装类型转化为基本类型。如下所示:

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

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

在上面的例子中,我们使用 .valueOf() 方法将包装类型转换为基本类型,并完成了比较。

结论

在使用 Chai 进行单元测试时,遇到 AssertionError: expected 'false' to equal false 错误的问题,经常是由于包装类型与基本类型的比较导致的。为了解决这个问题,有几种方法可以采用,包括使用某些特定的 Chai 断言或者手动调用 .valueOf() 方法。我们希望这篇文章能够对您的工作有所帮助,并能够更好地使用 Chai 进行前端开发。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672f1a4eeedcc8a97c8c9609