[英]go wire, wiring up the dependencies
我正在使用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值的mathdb.NewMockedArango(idGenerator)(類型的值(* github.com / tejashwi / catalog-manager-svc / pkg / webservice / arangodb / mockdb.MockedArango,錯誤))
wire.Interface的簽名為InterfaceValue(typ interface{}, x interface{})
在這里,您需要傳遞兩個單值參數。 在第二個參數中,您要傳遞2值參數,因為函數mockdb.NewMockedArango
返回了2個值。
您可以將功能ResolveMockArangoDB更改為:
func ResolveMockArangoDB(idGenerator idgenerator.IDGenerator) (arangodb.Arango, error) {
mockedArango, err := mockdb.NewMockedArango(idGenerator)
<HANDLE err>
panic(wire.Build(wire.InterfaceValue(new(arangodb.Arango), mockedArango)))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.