【问题标题】:How does Jest (or Mocha) work without having to be imported?Jest(或 Mocha)如何在无需导入的情况下工作?
【发布时间】:2019-09-29 15:29:51
【问题描述】:

我们在 NodeJS 中使用的几乎每个模块都需要以某种方式导入。这些模块提供了我们可以使用的功能。然而,我注意到像 mocha 和 jest 这样的测试框架似乎并没有以同样的方式工作。您只需在 package.json 中的“test”脚本下包含“mocha”或“jest”,它就可以完成所有工作。

我很好奇这是如何工作的。我们如何通过在 package.json 中的“scripts”下提及一个关键字来执行脚本/函数。

如果有人能回答这个问题会非常有帮助! :)

【问题讨论】:

  • 这不是关键字,而是控制台 API。如果你已经全局安装了它们,你甚至不需要通过 npm 调用命令,你可以直接调用 mocha 或 jest。
  • 如果我以后有时间(如果没有其他答案或重复问题)我会写一个简短的答案来说明如何完成。
  • @zzzzBov 谢谢!但我仍然对此感到很困惑。如果您能详细说明一下或告诉我它是如何完成的,那就太好了。
  • 在相当长的一段时间内,我似乎没有时间为此写一个长篇答案,但 Tim Wong 有一个很好的答案,涵盖了基础知识。我现在要添加的一件事是package.json has a bin option,它允许您为您的项目构建自定义 CLI,npm scripts 可以利用这些命令。

标签: javascript node.js mocha.js jestjs


【解决方案1】:

关键字mocha实际上是一个CLI,就像你使用linux的lscat一样。

如果您询问如何使用 Node.js 构建 CLI,以下参考资料可能会有所帮助。

mocha 的工作原理

默认情况下,mocha 会查找 glob “./test/*.js”,因此您可能希望将测试放在 test/ 文件夹中。如果要包含子目录,请传递 --recursive 选项。

参考:https://mochajs.org/#the-test-directory

  1. 运行mocha CLI。
  2. 程序设置全局变量(例如describeit等)。
  3. 程序加载test目录下的所有javascript文件。

【讨论】:

    【解决方案2】:

    我们通过执行“npm run test”或“npm test”命令来运行测试。不是通过执行“node test.js”、“npm start”或“npm run start”。调用 test 命令会执行测试库 CLI、mocha、jest 等。这意味着您将 test.js 文件作为参数发送到测试 CLI。因此,您的测试命令(it、describe 等)由测试 CLI 而非 javascript/node.js 解释。如果你尝试“node test.js”,你会得到一个“ReferenceError: it/describe is not defined”。 很快,由于您的 test.js 文件由测试 CLI(mocha、jest 等)执行,您不需要导入这些库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      相关资源
      最近更新 更多