在Go 單元測試中驗證命令列標誌
考慮以下使用命令列標誌來設定格式類型的程式碼:
<code class="go">// ... elided for brevity ...</code>
為了確保-format 標誌設定為預期值,可以編寫單元測試。 flag.Var 函數可用於自訂標誌的處理,從而允許對標誌值進行驗證和更多控制。
自訂標誌處理是透過實作Value 介面來實現的:
<code class="go">type formatType string func (f *formatType) String() string { return fmt.Sprint(*f) } func (f *formatType) Set(value string) error { // Validation logic here }</code>
將此套用於格式標誌:
<code class="go">var typeFlag formatType func init() { // ... elided for brevity ... flag.Var(&typeFlag, "format", "Format type") flag.Var(&typeFlag, "f", "Format type (shorthand)") }</code>
要對自訂標誌進行驗證進行單元測試,請考慮在flag_test.go 中找到以下方法:
<code class="go">func TestCustomFlag(t *testing.T) { // Setup test environment origArgs := os.Args // Define custom flag type type myFlag int flag.Var((*myFlag)(nil), "customflag", "Custom flag") tests := []struct { origArgs []string expValue int expOutput string }{ // ... test cases ... } for _, test := range tests { os.Args = test.origArgs // Parse flags flag.Parse() // Check flag value if flagValue := flag.Lookup("customflag").Value.(myFlag); flagValue != test.expValue { t.Errorf("Expected %v, got %v", test.expValue, flagValue) } // Restore args os.Args = origArgs } }</code>
總之,標誌.Var 函數允許自訂和驗證標誌值,可以按照既定模式進行單元測試。
以上是如何在 Go 中對自訂命令列標誌驗證進行單元測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!