Jest(或 Mocha)如何在无需导入的情况下工作?

How does Jest (or Mocha) work without having to be imported?

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

我很好奇这是如何工作的。我们如何通过在 package.json.

中的 "scripts" 下提及关键字来执行脚本/函数

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

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

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

mocha 的工作原理

By default, mocha looks for the glob "./test/*.js", so you may want to put your tests in test/ folder. If you want to include subdirectories, pass the --recursive option.

Reference: https://mochajs.org/#the-test-directory

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

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