私はテストケースでハイライト表示しました。理想的にi
は、それがWHAT_SHOULD_I_PUT_HERE
main.go
package main
import "fmt"
type SomeType struct {
thingThatNeedsSetup struct{}
}
func Create() *SomeType {
return &SomeType{}
}
func main() {
a := Create()
fmt.Println(a.thingThatNeedsSetup)
}
main_test.go
package main
import (
"testing"
)
func TestCreate(t *testing.T) {
i := Create()
if i != WHAT_SHOULD_I_PUT_HERE {
t.Error()
}
}
Goは型付き言語であるため、goコンパイラは、そのように定義された関数を保証します
func Create() *SomeType
は常に型の値を返し*SomeType
ます。そのため、例はかなり無意味に見えます。
一方、インターフェースを返すものとして関数を定義した場合、空かどうか、例えば
func Create() interface{}
戻り値の基礎となるタイプは、そのインターフェースを実装するものであれば何でもかまいません。その場合、基礎となるタイプのテストが意味をなす場合があります。
リフレクトパッケージを使用して、2つの値の型が等しいかどうかをテストできます。具体的には、Reflect.Type型の値を返す関数Reflect.TypeOf です。
ドキュメントから:
タイプ値は、==演算子などで比較できます。2つのType値は、同じタイプを表す場合は等しくなります。
例:
package main
import (
"testing"
"reflect"
)
func TestCreate(t *testing.T) {
i := Create()
if reflect.TypeOf(i) != reflect.TypeOf(&SomeType{}) {
t.Error()
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加