在我的npm包中,我想模仿Meteor遵循的模式:源文件(名为client.js
)在client.tests.js
文件夹中有一个测试文件(名为src/
) 。测试使用npm test
命令运行。
我正在使用't'的使用文档。我不想在我的包测试命令中使用find
。
据我所知,mocha可以递归执行测试:
mocha --recursive
我知道mocha可以使用--recursive
标志在特定子文件夹中执行测试:
mocha src --recursive
我也明白我可以指定一个通过传递*.tests.js
来过滤文件的glob:
mocha * .tests.js
但是,我想要这三个。我希望mocha只测试src文件夹中以tests.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
个文件? 答案 0 :(得分:50)
--recursive
标志用于对目录进行操作。如果你要传递一个匹配目录的glob,那么这些目录将被递归检查,但是如果你传递一个匹配文件的glob,就像你正在做的那样,那么--recursive
是无效的。我建议不要将--recursive
与glob一起使用,因为globs已经具有在子目录中递归查看的能力。你可以这样做:
mocha 'src/app/**/*.tests.js'
这将匹配*.tests.js
中递归匹配src/app
的所有文件。请注意我是如何在模式周围使用单引号的。这是引用模式,以便它按原样传递给Mocha的globbing代码。否则,你的shell可能会解释它。根据选项的不同,有些shell会将**
翻译为*
,但您无法获得所需的结果。