Hey, thanks. I'm aware of this approach.

I'm hoping for some technique that automatically injects, since it can be 
cumbersome to inject all your dependencies by hand. 

Similar to google/wire, but without the generated file sitting in the 
filesystem next to your test.

Matt 


On Wednesday, November 3, 2021 at 4:16:04 PM UTC-5 ben...@gmail.com wrote:

> func connectToDB(t *testing.T) *postgres.DB {
>>     t.Helper()
>>     // set up the connection, using t.Fatalf if an error occurs
>>     return conn
>> }
>>
>> func UserTest(t *testing.T) {
>>     db := connectToDB(t)
>> }
>>
>
> Yeah, that's a good way.
>
> And if you want to avoid re-connecting to the db every test, you can use a 
> top-level test function for the "suite", and sub-tests with t.Run() for the 
> individual tests, with the sub-tests closing over the db variable. Like so:
>
> func TestDatabaseThings(t *testing.T) {
>     db := connectToDB(t)
>
>     t.Run("Foo", func (t *testing.T) {
>         fmt.Println(db, "test foo stuff") // use "db" and test stuff
>     })
>
>     t.Run("Bar", func (t *testing.T) {
>         fmt.Println(db, "test bar stuff") // use "db" and test stuff
>     })
> }
>
> -Ben
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/2a237fed-ba58-436a-b8e8-5c5be3c5c47cn%40googlegroups.com.

Reply via email to