【发布时间】:2018-07-04 19:51:50
【问题描述】:
我有一个带有使用标志的 cli 的小型 Go 应用程序,我被要求让它更可测试。
我的应用程序在命令行上被调用,例如
deploy.exe <task> <command> -tenant tenant_name -validate -package "c:\some dir\\"
基于 task 和 command 调用不同的执行路径,最终调用驻留在另一个包中的函数,如下所示:
if command == "db" {
dbhelper.RunDBCmds(*tenant, *validate, *package)
}
我需要为标志解析编写单元测试,而不是在最后调用实际函数。
我对 Go 还很陌生,我正在努力弄清楚如何实现这一点。我考虑过将我的 Os.Args() 和 Flag 解析添加到一个函数中,该函数接受输入并输出一个指向 RunDBCmds(*tenant, ...) 函数的指针。但是,我只是不确定我能否完成返回指向函数的指针。
如果我能在不实际调用函数的情况下使我的代码更具可测试性,我将不胜感激。
【问题讨论】:
标签: unit-testing go