Library to generate random and typed data for tests.
In some types of tests it is convenient to randomize input data in order to avoid a hidden reliance on specific values. Especially in code bases that model domain specific values using named types, this can be cumbersome to do by hand.
This library provides a simple and convenient way to configure value types and generate them for specific tests.
Yes! There is even a convenient testdata.DefaultConfig
you can use.
You can configure the default config using the convenient testdata.Values functions. Alternatively you can use options
that is prefixed using With
when setting up your own Config
.
Yes, the testdata.MakeWith()
is only meant if you don't want to use the default config.
Yes, use the option testdata.WithGenerator
which accepts a func that provides a specific type. This func will be
called each time there is a need to generate that specific type. This is a method to override the default generator.
var (
t = &testing.T{}
_ = testdata.MakeSticky[City](t)
a = testdata.Make[Person](t)
b = testdata.Make[Person](t, func(person Person) Person {
person.Age = 32
return person
})
)
fmt.Printf("A: %#v\n", a)
fmt.Printf("B: %#v\n", b)
// Output:
// A: testdata_test.Person{Name:"My own name: 73", Age:50, Dish:"SPAGHETTI", City:"City-LCMNe2ur8bFrW7oM", Note:"string-k3Dc1kHJPXsAFv0C"}
// B: testdata_test.Person{Name:"My own name: 94", Age:32, Dish:"SPAGHETTI", City:"City-LCMNe2ur8bFrW7oM", Note:"string-nUQnH3DqWyTPPTEi"}