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

Gon*_*ira 87 javascript gruntjs karma-runner karma-jasmine gulp

所以,我一直在寻找这个,在这里找到"类似"的答案,但不完全是我想要的.

现在,如果我想测试与因缘一个单一的文件,我需要做的fit(),fdescribe()对有问题的文件...

但是,我真正想要的是能够使用配置文件调用karma,并将其指向特定文件,因此我根本不需要修改文件,即:

karma run --conf karma.conf.js --file /path/to/specific/test_file.js

是否有可能做到这一点?还是有帮助?(使用grunt或gulp?)

bva*_*ghn 53

首先你需要启动karma服务器

karma start
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用grep过滤特定的测试或描述块:

karma run -- --grep=testDescriptionFilter
Run Code Online (Sandbox Code Playgroud)

  • 这个答案应该说你应该在运行`karma run`之前让`karma`与`karma start`一起运行 (12认同)
  • 这不会进行单一测试! (8认同)
  • 考虑到有关如何使用"业力运行"过滤的问题,我真的不认为这是必要的.很明显,海报知道如何启动Karma并运行所有测试,并且只是寻找有关过滤的语法. (4认同)
  • 如果我想以编程方式进行此操作,我该怎么办?即我不知道改变的文件的描述,但我会知道它的文件名. (2认同)
  • 这个解决方案似乎根本不适用于Jasmine测试(karma-jasmine).业力运行--help根本没有显示--grep作为命令选项.我最近使用了Karma(它说1.5.0). (2认同)
  • 这个答案是2岁!;) 事情会改变的. (2认同)
  • 这对我使用了 `karma-mocha`,但我不得不在 karma.conf.js 中注释掉 `singleRun: true` 并运行 `karma start --no-auto-watch`,这样它就不会尝试运行从“业力开始”开始的整个套房...... (2认同)

Yur*_*nko 16

即使--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))
  });
});
Run Code Online (Sandbox Code Playgroud)

然后在CLI中:

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run
Run Code Online (Sandbox Code Playgroud)

  • 这最终效果很好!只需确保您的默认 glob 前面有一个目录名称,否则您会收到模式错误。另外,我更改了文件:定义如下: files: [ ].concat(getSpecs(process.env.KARMA_SPECS)),最终效果更好,因为如果没有环境变量,该函数已经在其中放入了 glob 模式放。哦,我认为你不需要命令前面的“env”(没有它也适用于我)。感谢这个解决方案@Yuriy Kharchenko! (2认同)

Pau*_*tte 6

最新版本的业力不再支持此选项:

请参阅https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054

可以使用CLI重新定义files数组:

karma start --files=Array("test/Spec/services/myServiceSpec.js")
Run Code Online (Sandbox Code Playgroud)

或逃脱:

karma start --files=Array\(\"test/Spec/services/myServiceSpec.js\"\)
Run Code Online (Sandbox Code Playgroud)

参考

  • 每个来到这里的警告这个选项在业力中不再受支持:https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054 (23认同)
  • 所以,当我尝试这个时,我得到以下错误:`config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve))`,这可能是因为我正在使用requireJS? (5认同)
  • 给我这个错误 - bash:意外令牌附近的语法错误`('' (2认同)
  • nm,似乎业力不再支持--files arg? (2认同)