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


当前回答

我在Windows 7上使用node.js v0.10.0和mocha v1.8.2和npm v1.2.14。 我只是想让摩卡使用路径测试/单元来找到我的测试, 在花了很长时间并尝试了几件事之后,

使用"test/unit/*.js"选项在windows上不起作用。 windows shell不像unixen那样展开通配符是有原因的。

但是使用“test/unit”也可以,没有文件模式。 如。“mocha test/unit”会运行test/unit文件夹下的所有文件。

这仍然只运行一个文件夹文件作为测试,但您可以传递多个目录名称作为参数。

此外,要运行单个测试文件,您可以指定完整的路径和文件名。 如。“摩卡测试/单位/ mytest1.js”

我实际上是在包里安装的。NPM Json "脚本":{ “测试”:“摩卡测试/单元” },

所以'npm test'运行我的单元测试。

其他回答

运行test_directory下的所有文件,包括与test.js匹配的子目录

find ./parent_test_directory -name '*test.js' | xargs mocha -R spec

或者使用——递归开关

mocha --recursive test_directory/

正如@jeff-dickey所建议的,在项目的根目录下创建一个名为test的文件夹。在这个文件夹中,创建一个名为mocha.opts的文件。现在,我试图改进Jeff的答案,对我有效的是,我没有指定一个测试文件夹的名称,而是指定了一个模式,通过添加这一行来查找要在我的项目中运行的所有测试:

*/tests/*.js——在mocha.opts中递归

如果你想指定查找测试的确切文件夹,我做了这样的事情:

shared/tests/*.js --recursive
server/tests/graph/*.js --recursive

我希望这能帮助那些需要比其他答案更多的人

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

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

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

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

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

如果你使用的是nodejs,在你的包中。脚本下的Json

对于全局(-g)安装:"test": "mocha server-test"或"test": "mocha server-test/**/*.js"用于子文档 项目安装:“test”:“node_modules/mocha/bin/mocha server-test”或“test”:“node_modules/mocha/bin/mocha server-test/**/*.js”

然后像npm测试一样正常运行你的测试

我在Windows 7上使用node.js v0.10.0和mocha v1.8.2和npm v1.2.14。 我只是想让摩卡使用路径测试/单元来找到我的测试, 在花了很长时间并尝试了几件事之后,

使用"test/unit/*.js"选项在windows上不起作用。 windows shell不像unixen那样展开通配符是有原因的。

但是使用“test/unit”也可以,没有文件模式。 如。“mocha test/unit”会运行test/unit文件夹下的所有文件。

这仍然只运行一个文件夹文件作为测试,但您可以传递多个目录名称作为参数。

此外,要运行单个测试文件,您可以指定完整的路径和文件名。 如。“摩卡测试/单位/ mytest1.js”

我实际上是在包里安装的。NPM Json "脚本":{ “测试”:“摩卡测试/单元” },

所以'npm test'运行我的单元测试。