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


当前回答

如果在node.js中,Mocha v6的一些新配置:

选项1:创建.mocharc。Json在项目的根目录:

{
  "spec": "path/to/test/files"
}

选项2:在项目的package.json中添加mocha属性:

{
  ...

  "mocha": {
    "spec": "path/to/test/files"
  }
}

这里有更多的选择。

其他回答

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

这里有一种方法,如果你的测试文件夹中有子文件夹。

/test
/test/server-test
/test/other-test

然后在linux中,你可以使用find命令递归地列出所有*.js文件,并将其传递给mocha:

mocha $(find test -name '*.js')

windows中的另一个选项是使用cross-env包,并在package.json中遵循npm脚本

"scripts": {
    "test": "cross-env mocha '*.test.js'"
  },
"devDependencies": {
    "cross-env": "latest",
}

在这种情况下,根文件夹中带有*.test.js模式的所有测试文件将由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

不要使用-g或——grep选项,该模式操作的是it()内部的测试名称,而不是文件系统。目前的文件在这方面是误导和/或完全错误的。为了将整个命令限制在文件系统的一部分,您可以将一个模式作为最后一个参数(它不是一个标志)。

例如,这个命令会将你的报表设置为spec,但只会测试server-test目录下的js文件:

mocha --reporter spec server-test/*.js

这个命令的作用和上面一样,而且它只会运行测试用例,其中测试的it()字符串/定义以"Fnord:"开头:

mocha --reporter spec --grep "Fnord:" server-test/*.js