我需要对用 NodeJS 编写的 rest api 进行单元测试。为此,我需要使用 supertest npm 包。我在关注 this tutorial article用于实现单元测试功能。
现在,在这篇文章中提到 mocha
已经包含在 supertest
本身中,因此不需要单独安装它。所以,我只使用 npm install --save-dev supertest
安装 supertest
。
但是,当我在我的 package.json
- "test": "mocha"
中添加这一行并运行 npm test
时,它给出错误提示 'mocha' 未被识别为内部或外部命令
。我需要运行 npm install --save-dev mocha
才能成功运行。但为什么我需要单独包含 mocha
,如果它应该如何运行,为什么本文或 supertest
的 npm 主页上没有提到它?
最佳答案
我去了Supertest page on npmjs并检查了依赖关系。 Mocha 被列为开发依赖项。这意味着在创建超测试时使用了 Mocha,但超测试运行不需要 Mocha。 当我在 Node.js 项目上工作时,我将某些包安装为开发依赖项。这些可以是用于测试 (Mocha) 或 linting (Standard) 的包。这意味着当项目被部署时,它不需要这些包来运行。
此外,您可以使用 npm list
命令查看安装了哪些模块。我刚刚安装了 supertest 并运行了 npm list。这是 super 测试的结构:
进一步,运行 npm ls mocha
并输出:
$ npm ls mocha
Node 测试@1.0.0 E:\Node 测试
-- (空)
当我运行 npm ls supertest
时,输出是:
$ npm ls supertest
Node 测试@1.0.0 E:\Node 测试
-- supertest@3.3.0
为什么文章说 mocha 可用?可能在 supertest 的早期版本中,它作为依赖包含在内
关于javascript - 'mocha' 不被识别为内部或外部命令 - mocha 不会自动安装 supertest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53647899/