Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何为mocha指定测试目录?_Unit Testing_Node.js_Mocha.js - Fatal编程技术网

Unit testing 如何为mocha指定测试目录?

Unit testing 如何为mocha指定测试目录?,unit-testing,node.js,mocha.js,Unit Testing,Node.js,Mocha.js,尝试在test下查找测试文件默认情况下,如何指定另一个目录,例如server test?这似乎不支持更改测试目录。 然而,也许你应该看看,相对于你的问题。这里有一种方法,如果你的测试文件夹中有子文件夹,例如 /test /test/server-test /test/other-test 然后在linux中,您可以使用find命令递归列出所有*.js文件并将其传递给mocha: mocha $(find test -name '*.js') 不要使用-g或--grep选项,该模式在它()内部

尝试在
test
下查找测试文件默认情况下,如何指定另一个目录,例如
server test

这似乎不支持更改测试目录。

然而,也许你应该看看,相对于你的问题。

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

/test
/test/server-test
/test/other-test
然后在linux中,您可以使用find命令递归列出所有*.js文件并将其传递给mocha:

mocha $(find test -name '*.js')
不要使用-g或--grep选项,该模式在它()内部的测试名称上运行,而不是在文件系统上。当前文件对此具有误导性和/或完全错误。要将整个命令限制在文件系统的一部分,可以将模式作为最后一个参数传递(它不是标志)

例如,此命令将您的reporter设置为spec,但仅测试服务器测试目录中的js文件:

mocha --reporter spec server-test/*.js
"scripts": {
    "start": "node ./bin/www", -- not required for tests, just here for context
    "test": "mocha test/**/*.js"
  },
{
  "spec": "path/to/test/files"
}
此命令将执行与上面相同的操作,并且它将只运行测试的it()字符串/定义以“Fnord:”开头的测试用例:


我在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测试/单元”运行在测试/单元文件夹中找到的所有文件

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

还可以指定完整路径和文件名来运行单个测试文件。 例如“摩卡测试/unit/mytest1.js”

我实际上是在package.json中为npm设置的 “脚本”:{ “测试”:“摩卡测试/单元” },

所以“npm测试”运行我的单元测试。

使用以下方法:

mocha server-test
或者,如果您有子目录,请使用以下命令:

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

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

编辑:不推荐使用此选项:


如果您仍然希望在命令行上运行
mocha
,但希望在文件夹
/server tests
中运行测试,而不是
/test
,请在
/test/mocha.opts
中创建一个文件,文件中只包含以下内容:

server-tests
如果您想运行该文件夹和子目录中的所有内容,请将其放入
test/mocha.opts

server-tests
--recursive

mocha.opts
是通过命令行传入的参数,因此将第一行设置为要更改测试的目录也将从
/test/

重定向到
我刚才遇到了这个问题,通过删除
--recursive
选项(我已经设置)解决了这个问题并使用上述建议的相同结构:

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


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

中的其他目录(如果您正在使用
nodejs
),在
脚本下的
包.json

server-tests
--recursive
  • 对于
    global(-g)
    安装:
    “测试”:“摩卡服务器测试”
    “测试”:“摩卡服务器测试/***.js”
    用于子文档
  • 对于
    项目
    安装:
    测试“:“node_modules/mocha/bin/mocha服务器测试”
    测试“:“node_modules/mocha/bin/mocha服务器测试/***.js”
    子文档

  • 然后像@superjos在评论中提到的那样,以npm测试的方式正常运行测试


    mocha——递归的“some_dir”
    运行
    test_目录中的所有文件
    ,包括匹配
    test.js的子目录

    find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
    
    或者使用
    --recursive
    开关

    mocha --recursive test_directory/
    

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

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

    server-tests
    --recursive
    
    如果您希望指定要在其中查找测试的确切文件夹,我会执行以下操作:

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

    我希望这能帮助那些需要比其他答案更多的东西的人。好的方法是在package.json中添加一个“test”npm脚本,用正确的参数调用mocha。这样,您的package.json也可以描述您的测试结构。它还避免了其他答案中的所有这些跨平台问题(双引号与单引号、“查找”等)

    要让mocha运行“test”目录中的所有js文件:

    mocha --reporter spec server-test/*.js
    
    "scripts": {
        "start": "node ./bin/www", -- not required for tests, just here for context
        "test": "mocha test/**/*.js"
      },
    
    {
      "spec": "path/to/test/files"
    }
    
    然后,要仅运行烟雾测试,请调用:

    npm test
    
    npm smoketest
    
    npm test
    
    您可以通过这种方式标准化所有项目中所有测试的运行,因此当新开发人员开始您的项目或其他项目时,他们知道“npm测试”将运行测试。这有很好的历史先例(例如,Maven,大多数老式的“制造”项目也是如此)。当所有项目都有相同的测试命令时,它确实有助于CI

    类似地,您可能希望mocha运行一些更快的“冒烟”测试:

    "scripts": {
        "test": "mocha test/**/*.js"
        "smoketest": "mocha smoketest/**/*.js"
      },
    
    然后,要仅运行烟雾测试,请调用:

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

    要按约定运行名为*.spec.js的所有测试,请执行以下操作:

      "scripts": {
        "test": "mocha **/*.spec.js"
      },
    
    然后,要运行所有测试,请调用:

    npm test
    
    npm smoketest
    
    npm test
    

    看到这里的图案了吗?好。:)一致性失败。

    如果在node.js中,一些新的配置从摩卡v6开始:

    {
      ...
    
      "mocha": {
        "spec": "path/to/test/files"
      }
    }
    
    选项1:在项目的根目录中创建
    .mocharc.json