在前端开发中,使用 Generator 函数可以让我们更加方便地处理一些异步逻辑。而在测试 Generator 函数时,Mocha 和 Sinon 是两个强大的工具。通过本文,我们将一步步教你如何使用 Mocha 和 Sinon 测试 JavaScript 中的 Generator 函数,以及如何写出健壮的测试用例。
环境准备
为了测试 Generator 函数,我们需要准备好以下环境:
在项目根目录下创建一个 package.json
文件,添加以下依赖:
-- -------------------- ---- ------- - ------------------ - -------------- ---------- ---------------------------------- ---------- -------------------- ---------- ------- --------- -------- --------- -------- ---------- ------------- -------- - -展开代码
在根目录下创建 .babelrc
文件,将以下代码复制到文件中:
{ "presets": ["@babel/preset-env"], "plugins": ["@babel/plugin-transform-runtime"] }
添加 .node_modules
和 dist
文件夹到 .gitignore
文件中,保留源代码和测试代码。
编写 Generator 函数
首先,让我们来编写一个有趣的 Generator 函数。这个函数非常简单,就是在一些字符串中找到第一个元音字母。
-- -------------------- ---- ------- -------- -------------------- - ----- ------ - ----- ---- ---- ---- ----- --- ---- - - -- - - ----------- ---- - -- ------------------------- - ----- ------- - - ------ ----- -展开代码
这个 Generator 函数接收一个字符串,并且在字符串中查找第一个元音字母。使用 yield
关键字将每个元音字母返回给调用方,并在函数执行完成时返回 null
。
编写测试用例
现在,我们来编写测试用例。首先,在根目录下创建一个 test
文件夹,并在该文件夹下创建一个 vowel.test.js
文件。我们需要测试 Generator 函数的每个返回值,以及当函数没有返回值时是否正确地返回了 null
。
-- -------------------- ---- ------- -- ---- ------ - ------ - ---- ------- ------ ----- ---- -------- ------ ------------- ------ - -------------- - ---- --------------- -- ------ -------------------------- -- -- - --------------------- -- -- - ----- -------- - --------------------- -------- ----------------------------------------- ----------------------------------------- ----------------------------------------- ---------------------------------------------- ---------------------------------------- --- --------------- ------ -- -- - ----- -------- - ---------------------- ---------------------------------------------- ---------------------------------------- --- ---------- ------- -------- -- -- - ----- --- - ------------------ ------- ----- -------- - ----------------------------- ----------------------------------------- ---------------------------------- ---------------------- --- ---展开代码
代码解释:
- 引入测试框架和依赖,包括 Mocha、Chai、Sinon 和 sinon-chai。
- 描述测试用例组,测试
findFirstVowel
函数。 - 测试函数应找到字符串中的每个元音字母,并返回
undefined
和done
。 - 测试函数在没有元音字母时应正确返回
null
。 - 测试函数在调用
yield
时能正确打印日志。
如果您了解 Generator 函数,您一定知道这个测试用例很简单。但是,它展示了如何编写合理的测试用例,并学习了使用 Mocha 和 Sinon 进行函数测试。
运行测试
现在运行下面的命令,启动测试:
$ npx mocha --require @babel/register
应该会输出类似以下的结果:
findFirstVowel ✓ 应找到字符串中的第一个元音字母 ✓ 当没有元音字母时应返回 null ✓ 在循环中调用 `yield` 应打印出日志 3 passing (2ms)
如果您在命令行中看到 PASS,则表示测试成功通过。
结语
在本文中,我们介绍了使用 Mocha 和 Sinon 测试 JavaScript 中的 Generator 函数。在编写测试用例时,我们重点关注每个返回值以及在函数中使用 yield 关键字时是否按预期输出。我们编写的测试用例可以轻松解决此类 issue,从而保证代码质量。如果您正在使用 Generator 函数,请务必遵循这些指南,编写出健壮的测试用例,并将其用于您的代码库中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6792fb0a504e4ea9bd6f9c4d