我有这个(在gulpfile.js中):
var gulp = require("gulp");
var mocha = require("gulp-mocha");
gulp.task("test", function() {
gulp
.src(["./**/*_test.js", "!./node_modules/**/*.js"]);
});
Run Code Online (Sandbox Code Playgroud)
它的工作原理.
我想从mocha命令复制相同的行为,不包括"node_modules"文件夹,运行npm test(在package.json中):
"scripts": {
"test": "mocha **\\*_test.js !./node_modules/**/*.js*",
}
Run Code Online (Sandbox Code Playgroud)
它不起作用.
我正在使用Windows.
有什么建议吗?
d51*_*512 19
我能够使用参数中的globbing模式来解决这个问题mocha.像你一样,我不想把我的所有测试放在一个tests文件夹下.我希望它们与他们测试的类位于同一目录中.我的文件结构如下所示:
project
|- lib
|- class1.js
|- class1.test.js
|- node_modules
|- lots of stuff...
Run Code Online (Sandbox Code Playgroud)
从project文件夹运行这个为我工作:
mocha './{,!(node_modules)/**}/*.test.js'
Run Code Online (Sandbox Code Playgroud)
哪个匹配*.test.js树中的任何文件,所以它的路径根本不长./node_modules/.
这是一个用于测试我认为有用的glob模式的在线工具.
Man*_*ore 11
对于Windows用户 此脚本将完美运行
"test": "mocha \"./{,!(node_modules)/**/}*.test.js\"",
Run Code Online (Sandbox Code Playgroud)
我希望这将有所帮助。
干杯!
我不是摩卡或蚂蚁风格模式的大师,但也许不可能在mocha命令行中排除特定路径.
您可以将所有测试文件放在测试文件夹下,并将package.json设置为:
"scripts": {
"test": "mocha ./test/**/*_test.js"
}
Run Code Online (Sandbox Code Playgroud)
您还可以提供多个起始文件夹:
"scripts": {
"test": "mocha ./test/**/*_test.js ./another_test_folder/**/*_test.js"
}
Run Code Online (Sandbox Code Playgroud)
您可以通过传递opts排除摩卡中的文件
mocha -h|grep -i exclude
--exclude <file> a file or glob pattern to ignore (default: )
mocha --exclude **/*-.jest.js
Run Code Online (Sandbox Code Playgroud)
此外,您还可以创建一个test/mocha.opts文件并将其添加到此处
# test/mocha.opts
--exclude **/*-test.jest.js
--require ./test/setup.js
Run Code Online (Sandbox Code Playgroud)
如果要排除特定文件类型,可以执行以下操作
// test/setup.js
require.extensions['.graphql'] = function() {
return null
}
Run Code Online (Sandbox Code Playgroud)
当使用mocha无法理解的模块加载器(例如webpack)处理扩展时,这很有用。
截至 2019 年,在 Node 下配置 Mocha 的现代方法是通过项目根目录中的配置文件(例如通过.mocharc.js)。
.mocharc.js这是那个的例子
speckey)和exclude从整个套件( key)中排除示例(或者可以是任何实验测试) 。module.exports = {
'spec': 'src/front/js/tests/**/*.spec.js',
'exclude': 'src/front/js/tests/examples/*.spec.js',
'reporter': 'dot'
};
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,配置中可以使用更多选项。在某种程度上,它们只是Mocha CLI 选项的复制品。只需查找您喜欢的内容并尝试在其中使用.mocharc.js(使用驼峰式命名法来表示包含破折号的 CLI 选项)。或者查看配置示例。
正如 @thebearingedge 的评论中所建议的,最后我将所有源文件(以及相关测试文件)放在一个新的“src”目录中。
\n通过这种方式,我可以使用默认排除“node_modules”文件夹的路径定义测试的根。
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src \n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 fileA.js \n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 fileA_test.js \n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 fileB.js \n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 fileB_test.js \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\nRun Code Online (Sandbox Code Playgroud)\n\n我必须更新 package.json、gulpfile.js 以及我用作实用程序的一些批处理文件中的路径。
\n\n改变在gulpfile.js:
\n\n.src(["./src/**/*_test.js"]);\nRun Code Online (Sandbox Code Playgroud)\n\n并在package.json中中:
\n\n"test": "mocha src\\\\**\\\\*_test.js",\nRun Code Online (Sandbox Code Playgroud)\n\n简单的改变就可以了。
\n\n| 归档时间: |
|
| 查看次数: |
16013 次 |
| 最近记录: |