У меня есть небольшое приложение Go с cli, использующим флаги, и меня попросили сделать его более тестируемым.
Мое приложение вызывается из командной строки, как
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, ...)
. Тем не менее, я просто не уверен, что смогу вернуть указатель на функцию.
Буду признателен за любые советы о том, как сделать мой код более тестируемым без фактического вызова функций.