Javascript mocha如何在我的'src'文件夹中递归搜索特定的文件名模式?
在我的npm包中,我想模拟Meteor的模式如下:源文件(名为Javascript mocha如何在我的'src'文件夹中递归搜索特定的文件名模式?,javascript,node.js,npm,mocha.js,Javascript,Node.js,Npm,Mocha.js,在我的npm包中,我想模拟Meteor的模式如下:源文件(名为client.js)有一个测试文件(名为client.tests.js)位于src/文件夹中。使用npm test命令运行测试 我正在跟踪使用文档到“t”。我不想在包测试命令中使用find 我了解mocha可以递归执行测试: 摩卡——递归 我知道mocha可以使用--recursive标志在特定子文件夹中执行测试: 摩卡src——递归 我还了解,我可以通过传递*.tests.js,指定一个glob来过滤文件: 摩卡*.tests.js
client.js
)有一个测试文件(名为client.tests.js
)位于src/
文件夹中。使用npm test
命令运行测试
我正在跟踪使用文档到“t”。我不想在包测试命令中使用find
--recursive
标志在特定子文件夹中执行测试:
摩卡src——递归*.tests.js
,指定一个glob来过滤文件:
摩卡*.tests.jstests.js
结尾的文件,递归地检查子目录
mocha --recursive *.tests.js
// See the files?
$ > ll ./src/app/
total 168
-rw-r--r-- ... client.js
-rw-r--r-- ... client.tests.js
// Option A
$ > mocha --recursive *.tests.js
Warning: Could not find any test files matching pattern: *.tests.js
No test files found
// Option B
$ > mocha *.tests.js --recursive
Warning: Could not find any test files matching pattern: *.tests.js
No test files found.
// Option C
$ > mocha --recursive src/app/*.tests.js
3 passing (130ms)
3 failing
所以
*.tests.js
文件李>
--recursive
标志用于对目录进行操作。如果要传递一个与目录匹配的glob,那么将递归地检查这些目录,但是如果要传递一个与文件匹配的glob,就像您正在做的那样,那么--recursive
是无效的。我建议不要对glob使用--recursive
,因为glob已经具有在子目录中递归查找的功能。你可以做:
mocha 'src/app/**/*.tests.js'
这将在
src/app
中递归匹配所有匹配*.tests.js
的文件。注意我是如何在模式周围使用单引号的。这是引用模式,以便将其按原样传递给Mocha的全局代码。否则,shell可能会解释它。根据选项的不同,一些shell会将**
转换为*
,您不会得到想要的结果。您是否尝试过使用这个glob:src/app/***.tests.js
?我确实没有。作为我自己的参考,我在哪里可以找到这个glob语法文档?我在投票前翻了几块石头。好奇。您可以在包存储库的自述文件中找到有关glob语法的更多信息。那是摩卡咖啡用的包装。我的。地球仪。LoLzAnother有趣的警告@Louis:我如何确保mocha--watch
使用上面定义的glob重新解析我的所有测试文件?当我使用npm test
或mocha--watch
手动运行测试时,整个infra中的所有测试文件都是第一次运行的,但是当我在启用mocha--watch
时编辑任何测试时,只有第一个测试文件被重新执行。。。我把我的摩卡旗子放在摩卡咖啡里。选择。@toszter我不使用mocha--watch
。也许你对它的工作原理有点奇怪。例如,它的一个怪癖是它无法检测文件是否被添加到目录中。我使用了gulp
对观看文件的支持,每次触发时,它都会从零开始启动摩卡,所以我避开了摩卡的任何怪癖Mocha--watch
。你可能会对它感兴趣。它来自github上摩卡回购协议的一位所有者。我从中得到的是,维护人员不建议使用--watch
。。。好的,我正在寻找一个简单的解决方案,每当我在本地开发环境中更改测试用例时,都可以重新启动我的测试,前提是设置时间不会超过我手动重新启动测试所花费的累计时间<代码>:P我将给一口
一枪。@Nishant Globs将下降任意数量的子目录级别。我在回答中显示的glob将匹配src/app/foo.tests.js
和src/app/x/bar.tests.js
和src/app/a/b/c/d/baz.tests.js
。人们常犯的一个错误是忘记(正如我在y回答中提到的)引用模式。它最终被它们的外壳解释,这可能有效,也可能无效。如果没有引用,sh
-型shell的默认设置将破坏模式。添加单引号保存了我的下午。我有一个结构,其中测试以不同的方式嵌套在测试文件夹中,一些测试文件位于测试文件夹的根路径中,其他文件位于子文件夹中,如您在上面的注释中所述。