业力:运行 来自命令行的单个测试文件
Karma: Running a single test file from command line
所以,我一直在寻找这个,在这里找到了 "similar" 个答案,但不完全是我想要的。
现在如果我想用 karma 测试单个文件,我需要对相关文件执行 fit()
、fdescribe()
...
然而,我想要的是能够使用配置文件调用 karma,并将其定向到特定文件,因此我根本不需要修改该文件,即:
karma run --conf karma.conf.js --file /path/to/specific/test_file.js
这可以吗?还是有什么帮手? (使用咕噜声或gulp?)
首先你需要用
启动业力服务器
karma start
然后,您可以使用 grep 过滤特定测试或描述块:
karma run -- --grep=testDescriptionFilter
最近版本的 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\"\)
参考资料
即使不再支持 --files
,您也可以使用环境变量来提供文件列表:
// 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
我尝试了@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
环境变量中提到的单个文件。例如:export KARMA_SPECS="src/plugins/muc-views/tests/spec1.js"
所以,我一直在寻找这个,在这里找到了 "similar" 个答案,但不完全是我想要的。
现在如果我想用 karma 测试单个文件,我需要对相关文件执行 fit()
、fdescribe()
...
然而,我想要的是能够使用配置文件调用 karma,并将其定向到特定文件,因此我根本不需要修改该文件,即:
karma run --conf karma.conf.js --file /path/to/specific/test_file.js
这可以吗?还是有什么帮手? (使用咕噜声或gulp?)
首先你需要用
启动业力服务器karma start
然后,您可以使用 grep 过滤特定测试或描述块:
karma run -- --grep=testDescriptionFilter
最近版本的 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\"\)
参考资料
即使不再支持 --files
,您也可以使用环境变量来提供文件列表:
// 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
我尝试了@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
环境变量中提到的单个文件。例如:export KARMA_SPECS="src/plugins/muc-views/tests/spec1.js"