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


93

因此,我一直在寻找这个问题,在这里找到了“类似”的答案,但并不是我想要的。

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

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

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

是否有可能做到这一点?或有任何帮助?(使用咕unt声或吞咽声?)


1
试过了karma run -- --grep=testDescriptionFilter吗?我之前已经看到过此建议,但是我无法直接验证它是否有效。(如果我在家,我会在建议之前尝试。由于我无法尝试-我是在评论而不是回答。):)
bvaughn

1
这不只是针对特定对象it吗?无法将其用于文件?
贡萨洛·维埃拉

3
老实说,如果我想只关注一个测试文件,我总是修改过karma.conf。做起来很容易,我从来没有花时间去寻找更快的方法。
bvaughn

1
热狗。很高兴它有所帮助。发表。:)
bvaughn 2015年

Answers:


59

首先,您需要使用以下命令启动业力服务器

karma start

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

karma run -- --grep=testDescriptionFilter

12
这个答案应该说您应该先karma跑步karma start才能跑步karma run
etagwerker

4
考虑到该问题询问如何使用过滤,我真的没有必要karma run。看起来很清楚,发布者知道如何启动Karma并运行所有测试,并且只是在寻找有关过滤的语法。
bvaughn

2
如果我希望通过编程方式做到这一点,该怎么办?即我不知道更改文件的描述,但是我知道文件名。
MPV

2
此解决方案似乎根本不适用于茉莉花测试(karma-jasmine)。而因果运行--help根本不将--grep显示为命令选项。我正在使用最新的Karma(说1.5.0)。
Yavin5年

9
这不会运行单个测试!
eav 2015年

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))
  });
});

然后在CLI中:

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

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

6

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

参见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\"\)

参考文献


2
给我这个错误
-bash

5
因此,当我尝试此操作时,出现以下错误:config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve)),这可能是由于我正在使用requireJS吗?
贡萨洛·维埃拉

1
erm,不是因为requireJS,出于某种奇怪的原因,业力没有将Array(“ zzz”)读为JS数组?O_o
贡萨洛·维埃拉,

2
nm,似乎业力不再支持--files arg?
贡萨洛·维埃拉

23
警告所有来到这里的人karma不再支持此选项:github.com/karma-runner/karma/issues/…–
dignifiedquire
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.