これは、testableFunction
変数がコード内の別の場所に割り当てられるためです。
次の例を参照してください。
var testableFunction = func(s string) string {
return "re: " + s
}
テストコード:
func TestFunction(t *testing.T) {
exp := "re: a"
if got := testableFunction("a"); got != exp {
t.Errorf("Expected: %q, got: %q", exp, got)
}
}
実行中go test -cover
:
PASS
coverage: 100.0% of statements
ok play 0.002s
明らかに、テストの実行前に新しい関数値が割り当てられた場合testableFunction
、変数の初期化に使用される無名関数はテストによって呼び出されません。
実証するには、テスト関数を次のように変更します。
func TestFunction(t *testing.T) {
testableFunction = func(s string) string { return "re: " + s }
exp := "re: a"
if got := testableFunction("a"); got != exp {
t.Errorf("Expected: %q, got: %q", exp, got)
}
}
実行中go test -cover
:
PASS
coverage: 0.0% of statements
ok play 0.003s