Rob*_*sen 11 mocha.js command-line-arguments node.js command-line-args
我正在使用mocha为使用命令行 -args npm模块的工具编写单元测试.不幸的是,用于mocha的选项是由我的工具中的命令行参数获取的,如果我的工具中不存在这些选项,则会尽职尽责地抛出错误.例如,如果我这样做......
mocha --watch
Run Code Online (Sandbox Code Playgroud)
...然后命令行args抛出这个:
UNKNOWN_OPTION:未知选项: - watch
我可以通过在我的工具中执行类似的操作来解决问题...
var cli = commandLineArgs([
{ name: 'verbose', alias: 'v', type: Boolean },
{ name: 'timeout', alias: 't', type: Number },
{ name: 'watch'} // So I can do mocha --watch
]);
Run Code Online (Sandbox Code Playgroud)
...但后来cli.getUsage()说我的工具有一个watch它实际上没有的选项.当然,如果我想将更多选项传递给摩卡,这种情况就会失控.
什么是"告诉"命令行参数忽略我的场景中的选项的最佳方法?
Ate*_*ral 15
您应该将工具分解为核心部分,该核心部分包含配置对象和使用该核心部分的命令行包装器.然后你只需对核心部分进行单元测试.
你的目标应该是测试核心部分,这是你写的部分; 而不是运用/测试command-line-args模块,理论上你应该相信它已被证明是由作者工作的.
我会将入口点代码写入CLI应用程序,以便它可以显式地将字符串数组作为参数,仅process.argv作为默认值直接使用.然后,您可以传递各种参数列表以进行单元测试,但在生产中运行时仍能正确执行.伪代码:
function cliMain(args) {
args = args || process.argv
// parse args here and proceed
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4314 次 |
| 最近记录: |