Mocha 测试中的 Anti-Patterns 和 Best Practices

阅读时长 5 分钟读完

在前端开发中,测试是不可或缺的一环。Mocha 是 JavaScript 的一种测试框架,它使得编写和运行测试变得更加简单易懂。但是,如果我们不遵循正确的测试模式和最佳实践,我们可能会遇到一些 Anti-Patterns。下面我们来看一些常见的 Anti-Patterns,以及如何避免它们。

Anti-Patterns

1. 使用全局变量

在测试中,我们应该尽可能避免使用全局变量。这是因为在一些较为复杂的测试用例中,全局变量可能会相互干扰,导致测试结果不准确。最常见的方法是将测试数据传递给需要的测试函数。

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

2. 运行非异步测试时忘记返回值

在 Mocha 中,测试可能是异步的或非异步的。并非所有的测试情况都是异步执行,但如果测试是异步的,我们必须正确的处理它。在测试中,我们必须将测试用例返回给 Mocha,否则它将永远不能正确的运行异步测试。

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

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

3. 在 afterEach 以及 after 中使用异步操作

afterEachafter 钩子函数中使用异步操作通常会导致像 setTimeout()setImmediate() 这样的函数可能会在 Mocha 结束运行之前被执行,导致测试失败。如果必须使用异步操作,在 afterEachafter 钩子函数中,请确保将其包装在 setTimeout() 中,并给予足够的时间使得其能够在测试结束之前完成。

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

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

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

Best Practices

除了 Anti-Patterns,我们同样应该将注意力集中于最佳实践上,以保证我们的测试代码优雅健壮。

1. 使用 asyn 和 await

Mocha 支持 ES6 的 asyncawait 关键字,这使得异步测试变得更加优雅。使用 async 声明你的测试函数,并在需要异步操作的地方使用 await。这里就不再举例,具体可参考 Mocha 官方文档。

2. 描述清晰、可读

描述测试的部分应该描述清晰、简练易懂,用不同的层级和样式去标识不同的测试点。如此设计会使测试更易于阅读和理解,并帮助代码维护。

3. 使用 beforeEach 和 afterEach

钩子函数的使用可以使得测试更加规范化和简单。beforeEachafterEach 对于所有用例的初始化和清除可以提供一个好的起点。

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

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

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

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

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

结论

本文中,我们介绍了 Mocha 测试中常见的 Anti-Patterns,以及一些可行的最佳实践。遵循最佳实践能够显著提高我们的测试代码。最后需要提醒的是,测试并不是在你完全理解你的代码之后进行的。重要的是,我们应该在编写代码时始终保持测试―测试可能会帮助我们找到一些不同于预期的结果,进而改进我们的代码。

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

纠错
反馈