English 中文(简体)
如何指定 Mocha 测试目录?
原标题:How to specify test directory for mocha?

"http://visionmedia.github.com/mocha/" rel=" noreferrer" > Mocha 试图在默认情况下在 test 下查找测试文件,我如何指定另一个目录,例如 server-test ?

最佳回答

编辑:此选项被废除 : < a href="https://mochajs.org/#mochaopts" rel="noreferrer" >https://mochajs.org/#mochaopts


如果您仍想通过在命令行上运行 mocha 来完成测试, 但是想要在一个文件夹 ./server- tests 而不是 ./ test 中运行测试。 / test/mocha.opts 创建一个在 < code> 上的文件。 / test/mocha. opts 在文件中仅此内容:

server-tests

如果您想要运行该文件夹和子目录中的所有内容, 请将其输入 < code> test/ mocha.opts

server-tests
--recursive

mocha.opts 是通过命令行通过的参数, 所以使第一行成为您想要更改测试的目录, 也会从 中重新定向 。/ test/

问题回答

使用此选项 :

mocha server-test

如果您有子目录,请使用:

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

注意使用双引号。如果省略,您可能无法在子目录中进行测试。

一种方式是,如果在测试文件夹中存在子文件夹,例如 。

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

然后在 Linux 中, 您可以使用查找命令来列出所有 *.js 文件, 并递归并传递给 Mocha :

mocha $(find test -name  *.js )

这样做的好办法就是在软件包中添加“ 测试” npm 脚本。 json 使用正确的参数调用 Mocha 。 这样, 您的软件包. json 也可以描述您的测试结构 。 它还可以避免其他答案中的所有交叉平台问题( 双对单引号, “ findd” 等 ) 。

Mocha 要在“ 测试” 目录中运行所有 js 文件 :

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

然后只运行烟雾测试电话:

npm test

您可以这样将所有项目中所有测试的运行标准化, 所以当新的开发者开始您的项目或其它项目时, 他们知道“ npm 测试” 将会运行测试 。 此测试具有良好的历史先例( 例如, 最老的学校“ make” 项目 ) 。 当所有项目都有相同的测试命令时, 它会帮助 CI 。

类似地,你可能会有更快速的“烟雾”测试的子集, 你可能会想要摩卡来运行:

"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

看到这里的图案吗? 好 : 一致挫败Murura

如果在 < 坚固> node.js 中,某些新配置为 < 坚固 > Mocha v6 :

选项 1: 在项目根目录中创建 < strongcode>.mocharc.json :

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

备选2:在项目 s < strong_ccode> package.json 中添加 < projects < projects 属性 :

{
  ...

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

更多选项是"https://mochajs.org/#configing-mocha-nodejs" rel="noreferrer" >这里

不要使用 -g 或 -- grep 选项, 该模式以其中的测试名称运行( ), 而不是文件系统。 当前文档对此有误导和/ 或完全错误。 要将整个命令限制在文件系统的一部分, 您可以通过一个模式作为最后一个参数( 不是标记 ) 。

例如, 此命令将设置您的报告器到 spec, 但只会在服务器测试目录内立即测试 js 文件 :

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

此命令将执行与以上相同的命令, 并且它只运行它( ) 字符串/ 定义以“ Fnord: ” 开头的测试案例 :

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

< 加强> 现在一天( 2020年) 您可以使用 < 强 > mocha 配置文件 < / 强 > 处理 :

步骤1:在您申请的“强”根位置 < 强 > 创建.mocharc.js 文件 < 强 > 。

步骤 2: Mocha 配置文件中的 < 强/ 强/ 强/ 强/ 强/ 强/ 强/ 强/ 强/ 强/ 强/ 强/ 弱 :

 use strict ;

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

配置文件中的更多选项请参见此链接 : < a href="https://github.com/moochajs/mocha/blob/master/example/config/.mocharc.js" rel=“noreferr'>https://github.com/moochajs/mocha/blob/master/example/config/.mocharc.js

test_ directory 中运行所有文件,包括符合 test.js 的子目录

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

或使用 - recursive 开关

mocha --recursive test_directory/

我刚刚有了这个问题,并且通过删除 -recursive 选项(我设置了这个选项),并使用上文建议的相同结构,解决了这个问题:

mochizize "Test/unit/unit/**/*.js" (测试/单位/单位/**/*.js)

这在 / test/ unit/ 下运行了所有目录中的所有测试, 而忽略了 < code>/ test/ 内的其他目录

@suerjos在评论使用中提及

mocha -- recursive " some_dir"

I am on Windows 7 using node.js v0.10.0 and mocha v1.8.2 and npm v1.2.14. I was just trying to get mocha to use the path test/unit to find my tests, After spending to long and trying several things I landed,

Using the "test/unit/*.js" option does not work on windows. For good reasons that windows shell doesn t expand wildcards like unixen.

However using "test/unit" does work, without the file pattern. eg. "mocha test/unit" runs all files found in test/unit folder.

这只继续作为测试运行一个文件夹文件, 但您可以通过多个目录名称作为参数 。

Also to run a single test file you can specify the full path and filename. eg. "mocha test/unit/mytest1.js"

I actually setup in package.json for npm "scripts": { "test": "mocha test/unit" },

所以,NPM测试运行我的单位测试。

如果您在 package.json 下使用 > nodejs , 您的 package.json 下使用 描述

  1. For global (-g) installations: "test": "mocha server-test" or "test": "mocha server-test/**/*.js" for subdocuments
  2. For project installations: "test": "node_modules/mocha/bin/mocha server-test" or "test": "node_modules/mocha/bin/mocha server-test/**/*.js" for subdocuments

然后按 npm 测试 通常的 npm 测试运行测试。

This doesn t seem to be any "easy" support for changing test directory.
However, maybe you should take a look at this issue, relative to your question.

@jeff- dickey 在您的工程根部建议, 制作一个名为 < code> test 的文件夹。 在该文件夹中, 制作一个名为 < code>mocha.opts 的文件。 现在, 我试图改进 Jeff s 的回答, 对我来说有效的是, 而不是指定一个测试文件夹的名称, 我指定了一个模式, 通过添加此行来查找项目中要运行的所有测试 :

mocha.opts 中的 .opts

如果您想要指定要查找测试的精确文件夹, 我做了类似的事情 :

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

我希望这能帮助任何比其他答案更需要帮助的人。

窗口中的另一个选项可以是使用 cross-env 软件包,并在 package.json 中使用npm 脚本。

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

在此情况下, 根文件夹中带有模式 *. test. js 的所有测试文件都将由 Mocha 运行 。





相关问题
run unit tests and coverage in certain python structure

I have some funny noob problem. I try to run unit tests from commandline: H:PROpyEstimator>python src estpython est_power_estimator.py Traceback (most recent call last): File "src est...

How to unit-test an enterprise symfony project?

I´m working on a huge project at my work. We have about 200 database tables, accordingly a huge number of Models, Actions and so on. How should I begin to write tests for this? My biggest problem ...

Code Coverage Tools & Visual Studio 2008 Pro

Just wondering what people are using for code coverage tools when using MS Visual Studio 2008 Pro. We are using the built-in MS test project and unit testing tool (the one that come pre-installed ...

Unit testing. File structure

I have a C++ legacy codebase with 10-15 applications, all sharing several components. While setting up unittests for both shared components and for applications themselves, I was wondering if there ...

Unit Testing .NET 3.5 projects using MStest in VS2010

There s a bug/feature in Visual Studio 2010 where you can t create a unit test project with the 2.0 CLR. https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=483891&wa=...

Unit Test for Exceptions Message

Is there a simple (Attribute-driven) way to have the following test fail on the message of the exception. [TestMethod()] [ExpectedException(typeof(ArgumentException))] public void ExceptionTestTest() ...