Использование testing.T в TestMain

Я хочу запустить несколько тестовых случаев, для которых необходимо запустить фиктивный сервер GRPC. я использую gomock библиотека для этого. Чтобы запустить сервер, я должен передать переменную типа testing.T к этой функции - gomock.NewController(), Так как это своего рода инициализация для всех тестовых случаев, я хочу сделать это в TestMain, Но TestMain имеет доступ только к testing.M Так как мне справиться с этим делом? Создать новый testing.T структура в TestMain? Это будет работать?

0 ответов

Похоже, вы ищете BeforeEach шаблон. У вас нет доступа к testing.T объект в TestMain потому что это более подходящее место для инициализации до и после запуска набора тестов.

Есть несколько рамок, которые могут дать вам BeforeEach дешево:

назвать несколько.

Вы также можете сделать свой собственный ролл:

type test struct{
  ctrl *gomock.Controller
  mockFoo *MockFoo
  // ...
}

func beforeEach(t *testing.T) test {
  ctrl := gomock.NewController(t)
  return test {
    ctrl:ctrl,
    mockFoo: NewMockFoo(ctrl),
  }
}

func TestBar(t *testing.T) {
  test := beforeEach(t)
  // ...
}

func TestBaz(t *testing.T) {
  test := beforeEach(t)
  // ...
}
Другие вопросы по тегам