Я использую Google wire , чтобы связать зависимости в одном из моих проектов Go. До настоящего времени все зависимости были успешно подключены.
У меня есть следующий контейнер:
type Container struct {
Logger logger.StructuredLogger
IDGenerator idgenerator.IDGenerator
Arango arangodb.Arango
}
Здесь StructuredLogger
, IDGenerator
и Arango
- интерфейс.
Набор контейнеров определяется следующим образом:
var mockContainerSet = wire.NewSet(
Container{},
ResolveStructuredLogger,
ResolveIDGenerator,
ResolveArangoDB,
)
Функции:
func ResolveStructuredLogger() logger.StructuredLogger {
panic(wire.Build(wire.InterfaceValue(new(logger.StructuredLogger), logrusprovider.NewLogrusLogger(nil))))
}
func ResolveIDGenerator() idgenerator.IDGenerator {
panic(wire.Build(wire.InterfaceValue(new(idgenerator.IDGenerator), examples.NewKSUIDGenerator())))
}
Теперь проблема в том, когда я хочу создать провайдера для Arango
. Заводской метод для поставщика Arango
принимает IDGenerator
в качестве аргумента.
func NewMockedArango(generator idgenerator.IDGenerator) (*MockedArango, error){
if generator == nil {
return nil , errors.New("mock arangodb expects a valid IDGenerator")
}
return &MockedArango{generator:generator}, nil
}
Все функции из arangodb.Arango
реализованы. И я попробовал следующее, чтобы создать провайдера:
func ResolveMockArangoDB(idGenerator idgenerator.IDGenerator) (arangodb.Arango, error) {
panic(wire.Build(wire.InterfaceValue(new(arangodb.Arango), mockdb.NewMockedArango(idGenerator))))
}
Но провод выдает ошибки, я пробовал много способов, но безуспешно. Любая помощь?
Ошибка:
2-значное mockdb.NewMockedArango (idGenerator) (значение типа
(* Github.com / tejashwi / каталог-менеджер-SVC / упак / вебсервис / arangodb / mockdb.MockedArango,
ошибка)) где ожидается одно значение