如何指定摩卡test目录?(How to specify test directory for mo

2019-06-24 18:52发布

摩卡试图寻找下测试文件test在默认情况下,我怎么指定另一个目录,例如: server-test

Answer 1:

如果你想还只是运行做mocha在命令行上,但希望到一个文件夹中运行测试./server-tests代替./test ,在创建文件./test/mocha.opts只此在文件中:

server-tests

如果你想运行该文件夹和子目录中的一切,要把它放到test/mocha.opts

server-tests
--recursive

mocha.opts是通过命令行传入的参数,这样使得第一线刚刚建立的目录要更改测试也将重定向来自./test/



Answer 2:

用这个:

mocha server-test

或者,如果你有子目录使用:

mocha "server-test/**/*.js"

注意使用双引号的。 如果忽略他们,你可能无法在子目录中运行测试。



Answer 3:

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

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

然后,在linux下可以使用find命令列出所有* .js文件递归文件,并把它传递到摩卡:

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


Answer 4:

不要使用-g或--grep选项,这种模式在它(内部测试的名称),而不是文件系统操作。 当前文档不误导和/或有关这一完全错误的。 为了限制整个命令到文件系统的一部分,可以通过一个模式作为最后一个参数(它不是一个标志)。

例如,该命令将设置你的记者符合规范,但只会测试JS文件,立即在服务器test目录内:

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

此命令将执行与上述相同的,再加上它只会运行测试的情况下测试的是()串/定义开头“Fnord:”:

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


Answer 5:

漂亮的方式做到这一点是添加在的package.json“测试” NPM脚本,用正确的参数来调用摩卡。 这样,你的package.json还介绍了您的测试结构。 这也避免了其他答案所有这些跨平台问题(双VS单引号,“发现”等)

有摩卡运行所有在“测试”目录js文件:

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

然后只运行冒烟测试拨打:

npm test

您可以在标准化所有项目这种方式,所有测试的运行,因此当一个新的开发你的项目或另一个开始,他们知道“故宫测试”将运行测试。 有很好的历史先例为这个(Maven的,例如,最老学校“作”的项目也是如此)。 这肯定有助于CI当所有项目具有相同的测试命令。

同样,您可能会遇到您可能希望摩卡跑得更快“冒烟”测试的一个子集:

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

然后只运行冒烟测试拨打:

npm smoketest

另一种常见的模式是将在相同的目录中,他们测试源的测试,但调用测试文件* .spec.js。 例如:SRC /富/ foo.js是由src /富/ foo.spec.js测试。

要运行按照惯例命名所有的测试* .spec.js:

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

然后,运行所有测试拨打:

npm test

看到这里的格局? 好。 :)一致性失败村 。



Answer 6:

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

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

或使用--recursive开关

mocha --recursive test_directory/


Answer 7:

我刚才有这个问题,通过删除解决它--recursive选项(我已成立),并使用相同的结构上面建议:

mochify "test/unit/**/*.js"

这种电脑采用了所有测试下的所有目录/test/unit/为我而忽视内部的其他目录/test/



Answer 8:

我在Windows 7上使用Node.js的v0.10.0和摩卡v1.8.2的和NPM v1.2.14。 我只是试图让摩卡使用通道测试/单位找到我的测试,花费长,并试图几件事我登陆后,

使用“测试/单位/ *。JS”选项不工作在Windows上。 对于Windows外壳不扩大像unixen通配符很好的理由。

然而,使用“测试/单位”没有工作,没有文件模式。 例如。 “摩卡测试/单位”运行测试/单元文件夹中的所有文件。

这只仍然运行一个文件夹中的文件作为测试,但你可以通过多个目录名作为参数。

同时运行,你可以指定完整的路径和文件名单个测试文件。 例如。 “摩卡测试/单元/ mytest1.js”

其实,我在设置为的package.json故宫“脚本”:{“测试”:“摩卡测试/单位”},

所以这是故宫测试“运行我的单元测试。



Answer 9:

如果您使用nodejs ,在你package.jsonscripts

  1. 对于global (-g)安装: "test": "mocha server-test""test": "mocha server-test/**/*.js"的子文档
  2. 对于project的安装: "test": "node_modules/mocha/bin/mocha server-test""test": "node_modules/mocha/bin/mocha server-test/**/*.js"的子文档

然后,只需运行测试通常为npm test



Answer 10:

正如在评论中提到使用由@superjos

mocha --recursive "some_dir"



Answer 11:

这似乎并没有成为改变test目录的任何“易”的支持。
但是,也许你应该看看这个问题 ,相对于你的问题。



Answer 12:

作为@杰夫-迪基建议,在你的项目的根,做一个文件夹,名为test 。 在该文件夹中,一个名为mocha.opts 。 现在,我尝试改善杰夫的回答,什么工作对我来说是不是指定只是一个测试文件夹的名称,我指定一个模式来查找所有的测试中添加这一行我的项目运行:

*/tests/*.js --recursivemocha.opts

如果你不是要指定确切的文件夹来寻找,我做了一件这样的测试:

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

我希望这有助于人谁需要比其他的答案提供更多



Answer 13:

如果在node.js中 ,一些新的配置作为摩卡V6的:

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

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

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

{
  ...

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

更多选项是在这里 。



文章来源: How to specify test directory for mocha?