你如何安装和运行Node.js测试模块Mocha?安装后获取"mocha:command not found"

Ste*_*ose 81 mocha.js node.js

我很难让Mocha像预期的那样工作,我很乐意按照文档记录说,但是(似乎)没有太多关于实际运行的文档.

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

$ mocha
mocha: command not found
Run Code Online (Sandbox Code Playgroud)

好的,所以我认为它不在我的身上PATH,所以我试着直接运行它,

$ ./node_modules/mocha/bin/mocha 
execvp(): No such file or directory
Run Code Online (Sandbox Code Playgroud)

最后,我试着点击另一个bin文件,得到了,

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

  .

  ? 1 tests complete (1ms)
Run Code Online (Sandbox Code Playgroud)

如何使用单个命令执行测试?誓言似乎让你,但我听说摩卡是更好的选择,我似乎无法让它正常工作.

关于我在第三次尝试中遇到的错误的任何想法?

编辑:

我在跑,

  • Ubuntu 11.10 64位
  • Node.js 0.7.5
  • npm 1.1.8
  • 摩卡0.14.1
  • 应该是0.6.0

Ben*_*nja 167

您不希望您的库测试失败,具体取决于机器设置(mocha为全局,全局mocha版本等),使用跨平台工作的本地mocha的方式是:

npx mocha <args>
Run Code Online (Sandbox Code Playgroud)

npm将别名放在该特殊文件夹的依赖项中的所有二进制文件中.最后,npm会在运行npm脚本时自动将node_modules/.bin添加到PATH,所以在你的package.json中你可以这样做:

node node_modules/.bin/mocha
Run Code Online (Sandbox Code Playgroud)

并用它调用它

"scripts": {
  "test": "mocha"
}
Run Code Online (Sandbox Code Playgroud)

  • @ michael.kebe不,你不需要指定使用本地mocha的路径,npm已经将"./node_modules/.bin"添加到$ PATH,因此它默认使用本地版本. (6认同)
  • @MinaLuke也可以,但是这是一个坏主意,`/ node_modules/.bin/ {module-binary-name}`是npm为依赖项中的二进制文件提供快捷方式的地方,你不应该直接引用源代码中的文件依赖关系,因为这可能会破坏下一个版本. (3认同)

Ste*_*ose 18

经过进一步的阅读和上面的Linus G Thiel的确认,我发现我只需要,

  • 降级到Node.js 0.6.12
  • 或者,
    • 将Mocha安装为全局
    • 加入./node_modules/.bin我的PATH

  • 我有节点0.8.12和mocha全局和本地安装(针对不同的项目),他们正在工作.所以不需要降级节点.对于本地安装的mocha,只需确保您的PATH设置如上,或直接从您的脚本(Makefile或"scripts"标签)调用它. (4认同)

Qui*_*inn 5

要从终端使用命令运行Mocha ,您需要在计算机上全局安装 mocha:mochathis

npm install --global mocha
Run Code Online (Sandbox Code Playgroud)

然后cd到你的项目文件夹/测试并运行mocha yourTestFileName.js


如果您想mocha在您的内部package.json作为开发依赖项提供:

npm install --save-dev mocha
Run Code Online (Sandbox Code Playgroud)

然后添加mocha到你的脚本里面package.json

"scripts": {
    "test": "mocha"
  },
Run Code Online (Sandbox Code Playgroud)

npm test然后在终端内运行。