Documentation ¶
Overview ¶
Package helperfunc はテストをしやすくするためのヘルパー関数集です. テストでのみ利用することを前提としています.
例えば、標準入力やコマンドの引数をモックしてテスト中に仮想的なユーザ入力が簡単に行えます.
注意点
いずれのヘルパー関数も、処理後に関数を返します. 必ず呼び出し直後に defer で、その戻り関数を設定してください. この、戻りの関数は、内部でモック前のバックアップを行い、処理後にリカバリする(元に戻す)ための関数です.
基本的な使い方
// 以下は foo bar が標準入力から渡されたのと同等な状態になります userInput := "foo bar" funcDefer := helperfunc.MockSTDIN(t, userInput) defer funcDefer()
より具体的な例
// 以下のテストは `echo "Hello, world." | qiitrans --debug ja en` と同等の状態. func TestMockSTDIN(t *testing.T) { dummySTDIN := "Hello, world." dummyArgs := []string{"--debug", "ja", "en"} // 標準入力のモックとリカバリ準備 funcDeferSTDIN := helperfunc.MockSTDIN(t, dummySTDIN) defer funcDeferSTDIN() // モックのリカバリ // フラグ・オプションのモックとリカバリ準備 funcDeferArgs := helperfunc.MockArgs(t, dummyArgs) defer funcDeferArgs() // モックのリカバリ // 標準入力のテスト { value, err := io.ReadAll(os.Stdin) if err != nil { t.Fatalf("failed to read stdin during test") } expect := userInput actual := string(value) assert.Equal(t, expect, actual) } // 引数のテスト { expect := dummyArgs actual := os.Args[1:] // Args[0] は実行ファイルのパスなので、それ以降を取得 assert.Equal(t, expect, actual) } }
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // IsErrorDummy が true の場合、FatalOnErr() は t.FailNow せずに標準エラー出力します. IsErrorDummy bool )
Functions ¶
func FatalOnErr ¶
FatalOnErr は err が nil ではない場合に t.FailNow でテストを終了します.
基本的に MockArgs と MockSTDIN などのヘルパー関数自身のカバレッジ目的で使用します. 一般的なテストでは t.Fatalf を利用してください.
func MockArgs ¶
MockArgs は、テストでユーザのコマンド引数(オプションやフラグ含む入力)をモックするヘルパー関数です. この関数は、モックの変更をリカバリーする defer 用の関数を返します.
dummyArgs := []string{"--debug", "ja", "en"} funcDefer := helperfunc.MockArgd(t, dummyArgs) defer funcDefer() /* DO SOMETHING WITH ARGS HERE */
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.