Golang での引数の受け渡しのテスト
Golang では、フラグを使用して関数に引数を渡すことができます。引数の受け渡しをテストするには、コマンドライン引数の受け渡しをシミュレートするテストを作成できます。
問題
次のテストを実行するとき:
import ( "os" "testing" ) func TestArgs(t *testing.T) { expected := "bla" os.Args = []string{"-user=bla"} actual := passArguments() if actual != expected { t.Errorf("Test failed, expected: '%s', got: '%s'", expected, actual) } }
テストは失敗し、予想される結果 (「bla」) が実際の結果と一致しないことを示すエラー メッセージが表示されます("root").
解決策
この問題は、os.Args の最初の値が実行可能ファイル自体へのパスであるために発生します。これを修正するには、実行可能ファイルと引数の両方を含むように os.Args スライスを更新する必要があります。
os.Args = []string{"cmd", "-user=bla"}
さらに、os.Args はグローバル変数であるため、元の状態を保存して、他のテストとの干渉を防ぐために、テスト後に復元します:
oldArgs := os.Args defer func() { os.Args = oldArgs }()
以上がGolang で引数の受け渡しを正しくテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。