我有这个(在gulpfile.js中):
var gulp = require("gulp");
var mocha = require("gulp-mocha");
gulp.task("test", function() {
gulp
.src(["./**/*_test.js", "!./node_modules/**/*.js"]);
});
它有效。
我想从mocha命令复制相同的行为,不包括“node_modules”文件夹,运行 npm test (在package.json中):
"scripts": {
"test": "mocha **\\*_test.js !./node_modules/**/*.js*",
}
它不起作用。
我正在使用Windows。
有什么建议吗?
答案 0 :(得分:15)
我能够在mocha
的参数中使用globbing模式解决这个问题。和你一样,我不想把我的所有测试放在一个tests
文件夹下。我希望它们与他们测试的类位于同一目录中。我的文件结构如下所示:
project
|- lib
|- class1.js
|- class1.test.js
|- node_modules
|- lots of stuff...
从project
文件夹运行此文件对我有用:
mocha './{,!(node_modules)/**}/*.test.js'
哪个匹配树中的任何*.test.js
文件,所以它的路径长度不是./node_modules/
。
这是一个online tool,用于测试我觉得有用的glob模式。
答案 1 :(得分:6)
适用于Windows用户 这个脚本将完美运行
"test": "mocha \"./{,!(node_modules)/**/}*.test.js\"",
我希望这会有所帮助。
喝彩!
答案 2 :(得分:5)
我不是摩卡或蚂蚁风格模式的大师,但也许它不可能在mocha命令行中排除特定路径。
您可以将所有测试文件放在测试文件夹下,并将package.json设置为:
"scripts": {
"test": "mocha ./test/**/*_test.js"
}
您还可以提供多个起始文件夹:
"scripts": {
"test": "mocha ./test/**/*_test.js ./another_test_folder/**/*_test.js"
}
答案 3 :(得分:1)
正如@thebearingedge在评论中所建议的,最后我将所有源文件(带有相关测试文件)放在一个新的“src”目录中。
通过这种方式,我可以使用默认情况下排除“node_modules”文件夹的路径定义测试的根。
.
├── src
├── fileA.js
├── fileA_test.js
├── fileB.js
├── fileB_test.js
├── node_modules
├── ...
我必须更新package.json,gulpfile.js以及我用作实用程序的一些批处理文件中的路径。
gulpfile.js 中的更改:
.src(["./src/**/*_test.js"]);
和 package.json :
"test": "mocha src\\**\\*_test.js",
简单的改变,它的确有效。
答案 4 :(得分:1)
我有一个spec
目录,其中包含我的所有规格。在该目录中,我有几个子目录,其中一个是e2e
specs目录。在那种情况下,我使用mocha specs $(find specs -name '*.js' -not -path "specs/e2e/*")
命令运行我的所有测试,忽略e2e
目录中的那些测试。
答案 5 :(得分:0)
您可以通过传递opts排除摩卡中的文件
mocha -h|grep -i exclude
--exclude <file> a file or glob pattern to ignore (default: )
mocha --exclude **/*-.jest.js
此外,您还可以创建一个test/mocha.opts
文件并将其添加到其中
# test/mocha.opts
--exclude **/*-test.jest.js
--require ./test/setup.js
如果要排除特定的文件类型,可以执行以下操作
// test/setup.js
require.extensions['.graphql'] = function() {
return null
}
当使用模块加载器(例如,mocha无法理解的webpack)处理扩展时,这很有用。
答案 6 :(得分:0)
截至2019年,Node下configuring Mocha的现代方式是通过项目根目录中的配置文件(例如,通过.mocharc.js
)。
以下是.mocharc.js
的示例
spec
键)exclude
键)中排除示例(也可以是任何实验测试)。module.exports = {
'spec': 'src/front/js/tests/**/*.spec.js',
'exclude': 'src/front/js/tests/examples/*.spec.js',
'reporter': 'dot'
};
您可能会看到,配置中可以使用更多选项。在某种程度上,它们只是Mocha CLI options的副本。只需查找所需的内容,然后尝试在.mocharc.js
中使用(use camelCase用于包含破折号的CLI选项)。或参见the config examples。