Как мне тестировать флаги командной строки в Go?
Я хотел бы, чтобы модульный тест проверял, что конкретный флаг командной строки находится в перечислении.
Вот код, против которого я хотел бы написать тесты:
var formatType string
const (
text = "text"
json = "json"
hash = "hash"
)
func init() {
const (
defaultFormat = "text"
formatUsage = "desired output format"
)
flag.StringVar(&formatType, "format", defaultFormat, formatUsage)
flag.StringVar(&formatType, "f", defaultFormat, formatUsage+" (shorthand)")
}
func main() {
flag.Parse()
}
Требуемый тест прошел бы, только если -формат равнялся одному из значений констант, указанных выше. Это значение будет доступно в formatType. Пример правильного вызова будет: программа -формат текста
Каков наилучший способ проверить желаемое поведение?
Замечания: Возможно, я сформулировал это плохо, но отображаемый код - это не сам модульный тест, а код, против которого я хочу написать модульные тесты. Это простой пример из инструмента, который я пишу и хотел спросить, есть ли хороший способ протестировать допустимые входные данные для инструмента.