Mocha尝试在默认情况下找到测试文件,我如何指定另一个目录,例如服务器-测试?


当前回答

对于更改测试目录,这似乎不是任何“简单”的支持。 然而,也许你应该看看这个问题,相对于你的问题。

其他回答

现在一天(2020年),你可以使用mocha配置文件来处理这个问题:

步骤1:在应用程序的根位置创建.mocharc.js文件

步骤2:在mocha配置文件中添加以下代码:

'use strict';

module.exports = {
  spec: 'src/app/**/*.test.js'
};

有关配置文件中的更多选项,请参阅此链接:https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js

我刚刚遇到了这个问题,并通过删除——recursive选项(我已经设置了)并使用上面建议的相同结构来解决它:

mochify “test/unit/**/*.js”

这为我运行了/test/unit/下所有目录下的所有测试,而忽略了/test/下的其他目录

编辑:该选项已弃用:https://mochajs.org/#mochaopts


如果仍然希望在命令行上运行mocha,但希望在。/server-tests文件夹而不是。/test文件夹中运行测试,请在。/test/mocha目录下创建一个文件。在文件中只有这个选项:

server-tests

如果你想运行这个文件夹和子目录下的所有内容,把它放到test/mocha.opts中

server-tests
--recursive

摩卡。Opts是通过命令行传入的参数,因此将第一行设置为您想要更改测试的目录,也将从。/test/重定向

对于更改测试目录,这似乎不是任何“简单”的支持。 然而,也许你应该看看这个问题,相对于你的问题。

这样做的好方法是在包中添加一个“test”npm脚本。Json,使用正确的参数调用mocha。这边您的包裹。Json还描述了测试结构。它还避免了其他答案中的所有这些跨平台问题(双引号vs单引号,“查找”等)。

让mocha运行"test"目录下的所有js文件:

"scripts": {
    "start": "node ./bin/www", -- not required for tests, just here for context
    "test": "mocha test/**/*.js"
  },

然后,要只运行烟雾测试,请调用:

npm test

你可以通过这种方式标准化所有项目中所有测试的运行,这样当一个新的开发人员开始你的项目或其他项目时,他们知道“npm test”将运行测试。这在历史上有很好的先例(例如,Maven也是大多数老式的“make”项目)。当所有项目都有相同的测试命令时,它肯定有助于CI。

类似地,您可能有一个快速“烟雾”测试的子集,您可能希望mocha运行:

"scripts": {
    "test": "mocha test/**/*.js"
    "smoketest": "mocha smoketest/**/*.js"
  },

然后,要只运行烟雾测试,请调用:

npm smoketest

另一种常见的模式是将测试放在与它们测试的源文件相同的目录中,但是将测试文件称为*.spec.js。例如:src/foo/foo.js通过src/foo/foo.spec.js进行测试。

按照约定运行所有命名为*.spec.js的测试:

  "scripts": {
    "test": "mocha **/*.spec.js"
  },

然后运行所有测试调用:

npm test

看到这里的模式了吗?好。:)一致性打败了村。