Gulp Karma:从命令行运行单个测试文件

qcbq4gxm  于 2022-12-08  发布在  Gulp
关注(0)|答案(4)|浏览(177)

所以,我一直在寻找这个,发现“相似”的答案在这里,但不完全是我想要的。
现在,如果我想测试一个带有karma的文件,我需要对有问题的文件执行fit()fdescribe() ...
然而,我想要的是能够只调用karma,与配置文件,并将其定向到一个特定的文件,所以我不需要修改文件,即:
karma run --conf karma.conf.js --file /path/to/specific/test_file.js
有可能做到这一点吗?或与任何帮助?(使用咕噜声或吞咽?)

4dc9hkyq

4dc9hkyq1#

首先你需要启动karma服务器

karma start

然后,您可以使用grep来筛选特定的测试或描述块:

karma run -- --grep=testDescriptionFilter
db2dz4w8

db2dz4w82#

即使不再支持--files,您也可以使用env变量提供文件列表:

// karma.conf.js
function getSpecs(specList) {
  if (specList) {
    return specList.split(',')
  } else {
    return ['**/*_spec.js'] // whatever your default glob is
  }
}

module.exports = function(config) {
  config.set({
    //...
    files: ['app.js'].concat(getSpecs(process.env.KARMA_SPECS))
  });
});

然后在CLI中:

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run
gmxoilav

gmxoilav3#

最近版本的karma不再支持此选项:

请https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054
可以使用CLI将文件数组重新定义为:

karma start --files=Array("test/Spec/services/myServiceSpec.js")

或逃逸:

karma start --files=Array\(\"test/Spec/services/myServiceSpec.js\"\)

参考资料

  • 因缘转轮来源:cli.js
  • 因缘转轮来源:config.js
gwbalxhn

gwbalxhn4#

我尝试了@Yuriy Kharchenko的解决方案,但遇到了Expected string or object with "pattern" property错误。
因此,我对他的回答做了以下修改,现在我可以使用Karma运行单个文件:

function getSpecs(specList) {
  if (specList) {
    return specList.toString();
  } else {
    return ['**/*_spec.js'] // whatever your default glob is
  }
}

module.exports = function(config) {
  config.set({
    //...
    files: [
        { pattern: getSpecs(process.env.KARMA_SPECS), type: "module"}
    ]
  });
});

注意:此解决方案仅适用于KARMA_SPECS env变量中提到的单个文件。例如:export KARMA_SPECS="src/plugins/muc-views/tests/spec1.js"

相关问题