我正在尝试传递grep参数,以便karma-mocha插件将其传递给 Mocha 并仅运行匹配的测试grep。命令行是这样的:
./node_modules/.bin/karma run -- --grep='one'
但是,Karma 实际上会检查所有测试,就像我不使用--grep. 根据karma run --help,之后的一切都--应该是客户参数。clientArg(它在帮助和关于如何运行的讨论中被提及karma run。)我尝试了一个没有 RequireJS 的小项目,它成功了。似乎添加 RequireJS 会导致问题。这是一个重现该问题的小设置:
karma.conf.js:
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['mocha', 'requirejs'],
files: [
'test-main.js',
{ pattern: 'test/**/*.js', included: false }
],
exclude: [],
preprocessors: {},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity
});
};
test-main.js:
var allTestFiles = [];
var TEST_REGEXP = /(spec|test)\.js$/i;
Object.keys(window.__karma__.files).forEach(function (file) {
if (TEST_REGEXP.test(file)) {
var normalizedTestModule = file.replace(/^\/base\/|\.js$/g, '');
allTestFiles.push(normalizedTestModule);
}
});
require.config({
baseUrl: '/base',
deps: allTestFiles,
callback: window.__karma__.start
});
您在此处看到的内容在功能上等同test-main.js于最初由karma init. 它仅被编辑以删除评论、规范空间和添加分号。
该test/test.js文件包含:
it("one", function () {});
it("two", function () {});