JavaScript 写测试时摒弃逆向思维,避免使用 Chai.expect

在编写 JavaScript 的测试用例时,我们经常使用 Chai 库的 expect 函数来进行断言。然而,使用 expect 函数确实是一种逆向思维。本文将介绍为什么要摒弃逆向思维,以及如何使用其他方式来进行断言。

逆向思维在测试中的问题

逆向思维是指从输出结果反推出输入数据的过程。在测试中,逆向思维往往会导致测试用例过于脆弱,而且很难覆盖完整的代码逻辑。例如,下面这个测试用例:

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

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

这个测试用例虽然看起来很简单,但实际上它只测试了一部分代码逻辑。如果 add 函数的实现变化,这个测试用例很可能就失效了。

因此,在测试中,我们应该尽量避免使用逆向思维,而是采用正向思维。

正向思维在测试中的优势

正向思维是指从输入数据推出输出结果的过程。在测试中,正向思维可以帮助我们更全面地测试代码逻辑,从而提高测试用例的覆盖率。

例如,对于上面那个测试用例,我们可以采用正向思维的方式来编写测试用例:

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

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

这个测试用例通过遍历测试数据来对 add 函数进行测试,从而更全面地测试其代码逻辑。这样一来,即使 add 函数的实现变化,这个测试用例也可以保证其有效性。

使用其他方式进行断言

上面的测试用例虽然看起来比较冗长,但是它确实更加全面,也更容易维护。除了避免使用 expect 函数之外,我们还可以使用其他方式进行断言。例如,使用 assert 库的 equal 函数:

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

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

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

这个测试用例使用了 assert.equal 函数来断言结果是否相等。虽然它不够直观,但是它确实更加安全和可靠。

结论

在编写 JavaScript 的测试用例时,我们应该尽量避免使用逆向思维,而是采用正向思维来编写测试用例。这样可以更全面地测试代码逻辑,提高测试用例的覆盖率。此外,为了保证测试用例的可靠性,我们应该避免使用 Chai.expect,采用其他方式来进行断言。

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