一尘不染

如何安装和运行Mocha(Node.js测试模块)?安装后出现“ mocha:找不到命令”

node.js

我在使Mocha正常工作方面遇到困难,并且我很乐意按照文档所述进行操作,但实际上并没有太多的文档说明。

我已经使用npm(全局和本地)安装了它,每次运行它都会得到:

$ mocha
mocha: command not found

好的,所以我发现它不在我的PATH,所以我尝试直接运行它,

$ ./node_modules/mocha/bin/mocha 
execvp(): No such file or directory

最后,我尝试打另一个bin文件,然后得到

$ ./node_modules/mocha/bin/_mocha 
path.existsSync is deprecated. It is now called `fs.existsSync`.

  .

  ✔ 1 tests complete (1ms)

如何只用一个命令执行测试?Vows似乎允许您,但是我听说Mocha是更好的选择,我似乎无法使其正常工作。

对我在第三次尝试中遇到的错误有任何想法吗?

编辑:

我在跑,

  • Ubuntu 11.10 64位
  • Node.js 0.7.5
  • npm 1.1.8
  • Mocha 0.14.1
  • 应该0.6.0

阅读 1021

收藏
2020-07-07

共1个答案

一尘不染

从npm 5.2.0开始,如果您运行以下命令,npm附带有一个新命令“ npx”,它使此操作变得更加简单:

npx mocha <args>

注意:可选参数会转发到正在执行的命令(在这种情况下为mocha)

这将自动从本地安装的mocha中选择可执行的“ mocha”命令(始终将其添加为dev依赖项,以确保您和其他所有人始终使用正确的mocha命令)。

请注意,如果您未安装mocha,此命令将自动获取并使用最新版本,这对于某些工具(例如脚手架)非常有用,但对于某些您可能想要依赖的依赖项可能不是最可取的固定到特定版本。

您可以在此处阅读有关npx的更多信息


现在,如果要定义一个自定义的npm脚本,而不是直接调用mocha,则是一个别名,它可能会调用其他npm二进制文件…

您不希望库测试根据机器设置而失败(将Mocha作为全局,全局Mocha版本等),使用跨平台工作的本地Mocha的方法是:

node node_modules/.bin/mocha

npm为该特殊文件夹上的依赖项中的所有二进制文件添加别名。最后,npm将在运行npm脚本时自动将node_modules /.bin添加到PATH中,因此在package.json中,您可以执行以下操作:

"scripts": {
  "test": "mocha"
}

并用

npm test
2020-07-07