rust - 是否可以在不解析命令行参数的情况下构造一个 StructOpt Args 对象进行测试?
问题描述
我有一个 fn main,它通过 StructOpt .. Args::from_args 解析参数。
有没有办法创建这个 Args 对象而不实际启动可执行文件进行测试?我可以直接创建一个 Args 对象吗?
例如,我可以这样做吗
fn test_function() {
let args = Args::default();
args.param1 = "value1";
args.param2 = "value2";
core_function(args);
}
fn main() {
let args = Args::from_args();
core_function(args);
}
解决方案
是的,structopt 还提供from_iter
了from_iter_safe
你所期望的功能:它们采用字符串的可迭代对象,并将它们解析为 CLI 参数。
他们所有人都真正委派鼓掌,但在语义上from_args
只是from_iter
以args_os()
作为参数调用。
from_iter_safe
可能是您想在测试中使用的那个:很像,如果发生解析/匹配错误from_args
,将打印一条错误消息并立即退出。from_iter
推荐阅读
- r - 移动棒棒糖 R
- apache-spark - org.elasticsearch.hadoop.rest.EsHadoopRemoteException mapper_parsing_exception:无法解析带日期的字段
- php - Laravel Eloquent 相同的查询
- node.js - 为什么我不能将响应数据推送到数组?
- r - R 中带有 textmodel_seedLDA 包的 LDA 主题模型的诊断(困惑、LogLik 等)
- python - PyYAML 错误:无法确定标签“!vault”的构造函数
- azure - 删除多个 vnet 对等体 azure CLI
- asp.net-core - ASP.NET Core Identity + Azure 上的单一登录
- html - 使用 Flexbox 在两行上定位 8 个按钮
- c# - 如何根据 ASP.NET Core Razor 页面中的单选按钮选择有条件地重定向到页面?