Как мне тестировать флаги командной строки в 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. Пример правильного вызова будет: программа -формат текста

Каков наилучший способ проверить желаемое поведение?

Замечания: Возможно, я сформулировал это плохо, но отображаемый код - это не сам модульный тест, а код, против которого я хочу написать модульные тесты. Это простой пример из инструмента, который я пишу и хотел спросить, есть ли хороший способ протестировать допустимые входные данные для инструмента.

Ответы на вопрос(2)

Ваш ответ на вопрос