在前端开发中,测试是不可或缺的一环。Mocha 是 JavaScript 的一种测试框架,它使得编写和运行测试变得更加简单易懂。但是,如果我们不遵循正确的测试模式和最佳实践,我们可能会遇到一些 Anti-Patterns。下面我们来看一些常见的 Anti-Patterns,以及如何避免它们。
Anti-Patterns
1. 使用全局变量
在测试中,我们应该尽可能避免使用全局变量。这是因为在一些较为复杂的测试用例中,全局变量可能会相互干扰,导致测试结果不准确。最常见的方法是将测试数据传递给需要的测试函数。
-- -------------------- ---- ------- ------------------ ---------- - --- ------- --------------------- - ------ - -- --- -------------------- - --------- --- --------- ---------- - --------------------------- --- --------- ---------- - --------------------------- --- ---
2. 运行非异步测试时忘记返回值
在 Mocha 中,测试可能是异步的或非异步的。并非所有的测试情况都是异步执行,但如果测试是异步的,我们必须正确的处理它。在测试中,我们必须将测试用例返回给 Mocha,否则它将永远不能正确的运行异步测试。
-- -------------------- ---- ------- ------------------------- ---------- - ----------- ---------- - ---------------------- --- ---------- -------------- - --------------------- - ---------------------- ------- -- ------ --- ---
3. 在 afterEach 以及 after 中使用异步操作
在 afterEach
和 after
钩子函数中使用异步操作通常会导致像 setTimeout()
或 setImmediate()
这样的函数可能会在 Mocha 结束运行之前被执行,导致测试失败。如果必须使用异步操作,在 afterEach
和 after
钩子函数中,请确保将其包装在 setTimeout()
中,并给予足够的时间使得其能够在测试结束之前完成。
-- -------------------- ---- ------- ----------- --------- -- ----- --------- ---------- - ------------------------ - --------------------- - ------------------------- ------- -- ------ --- -------------------- - --------------------- - --------------------- ------- -- ------ --- -------- ---------- - ------------------ --- ---
Best Practices
除了 Anti-Patterns,我们同样应该将注意力集中于最佳实践上,以保证我们的测试代码优雅健壮。
1. 使用 asyn 和 await
Mocha 支持 ES6 的 async
和 await
关键字,这使得异步测试变得更加优雅。使用 async
声明你的测试函数,并在需要异步操作的地方使用 await
。这里就不再举例,具体可参考 Mocha 官方文档。
2. 描述清晰、可读
描述测试的部分应该描述清晰、简练易懂,用不同的层级和样式去标识不同的测试点。如此设计会使测试更易于阅读和理解,并帮助代码维护。
3. 使用 beforeEach 和 afterEach
钩子函数的使用可以使得测试更加规范化和简单。beforeEach
和 afterEach
对于所有用例的初始化和清除可以提供一个好的起点。
-- -------------------- ---- ------- ------------ ---------- - ----------- ---------- - --- ---- --------------------- - --- - -- --- -------------------- - --- - -- --- ------- --- ---- --- ---------- - ------------------------ ------ --- ------- --- ---- --- ---------- - ------------------------ ------ --- ---
结论
本文中,我们介绍了 Mocha 测试中常见的 Anti-Patterns,以及一些可行的最佳实践。遵循最佳实践能够显著提高我们的测试代码。最后需要提醒的是,测试并不是在你完全理解你的代码之后进行的。重要的是,我们应该在编写代码时始终保持测试―测试可能会帮助我们找到一些不同于预期的结果,进而改进我们的代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674c6532a336082f25410b3d