Предположим, что у меня есть функция с именем GoLang GetQueue
и в зависимости от конфигурации она будет возвращать различные типы реализаций очереди.
func GetQueue(config string) *service.Queue {
switch(config):
case "A":
return &QueueA.NewQueue{...}
case "B":
return &QueueB.NewQueue{...}
...
}
service.Queue
- это интерфейс. И QueueA
, и QueueB
являются реализациями для этого интерфейса. QueueA.go выглядит так:
type service struct {
...
}
function NewService() *service.Queue {
return &service{}
}
Я хотел бы написать модульный тест для функции GetQueue
(которая определена вне пакета service
), и я хотел бы убедиться, что возвращаемые типы соответствуют ожидаемым. Тем не менее, QueueA.sevice
и QueueB.service
являются частными структурами. Так как я могу проверить, что возвращаемые типы являются ожидаемыми?