はじめに
RubyにはFakerというダミーデータを生成するツールがありますが、同じようなことをGoで実現したい場合に便利そうなツールがあったので利用例を備忘録として書いておこうと思います。
Gofakeit
GofakeitはGoで書かれたランダムデータジェネレータです。awesome-go にもリストされているツールです。
使い方
下記のコードのように簡単に利用できます。
詳細な使い方に関しては README が充実しているのでそちらが参考になるかと思います。
import (
"fmt"
"github.com/brianvoe/gofakeit/v6"
)
type Topic struct {
Name string
Tag []string
}
type User struct {
Name string `fake:"{firstname}"`
Age int `fake:"{number:0,150}"`
}
func main() {
// 関数で生成
fmt.Println(gofakeit.Name()) // Dell Champlin
fmt.Println(gofakeit.Color()) // BurlyWood
// Structのフィールドにセット
var t Topic
gofakeit.Struct(&t)
fmt.Println(t.Name) // TfEgs
fmt.Println(t.Tag) // [PdebUjW jcQvLbX UBdJrxA jxEbLyUjF]
// Structにfakeアノテーションを追加
var u User
gofakeit.Struct(&u)
fmt.Println(u.Name) // Cecil
fmt.Println(u.Age) // 109
}
まとめ
Gofakeitでダミーデータの生成を行いました。
私はGoMockのReturnするデータとしてテストコードで利用しましたが、他にも実装途中のAPIの返却値として一時的に埋め込んでおくなど幅広く利用できそうなので、関わっているプロジェクトのgo.modにそっと追加しておくと便利そうです。