本文整理汇总了Golang中github.com/fgrosse/goldi.Container.InjectInstance方法的典型用法代码示例。如果您正苦于以下问题:Golang Container.InjectInstance方法的具体用法?Golang Container.InjectInstance怎么用?Golang Container.InjectInstance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/fgrosse/goldi.Container
的用法示例。
在下文中一共展示了Container.InjectInstance方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1:
Context("when the type is not assignable to the expected type", func() {
It("should return an error", func() {
parameter := reflect.ValueOf("@foo")
expectedType := reflect.TypeOf(NewBar())
result, err := resolver.Resolve(parameter, expectedType)
Expect(result.IsValid()).To(BeFalse())
Expect(err).To(MatchError(`the referenced type "@foo" (type *goldi_test.Foo) is not assignable to the expected type *goldi_test.Bar`))
Expect(err.(goldi.TypeReferenceError).TypeID).To(Equal("foo"))
})
})
Context("when a func reference type is requested", func() {
It("should generate the type and return the function", func() {
foo := &Foo{Value: "Success!"}
container.InjectInstance("foo", foo)
parameter := reflect.ValueOf("@foo::ReturnString")
expectedType := reflect.TypeOf(func(string) string { return "" })
result, err := resolver.Resolve(parameter, expectedType)
Expect(err).NotTo(HaveOccurred())
Expect(result.Interface()).To(BeAssignableToTypeOf(foo.ReturnString))
Expect(result.Interface().(func(string) string)("YEAH")).To(Equal("Success! YEAH"))
})
It("should return an error if the method does not exist", func() {
container.InjectInstance("foo", new(Foo))
parameter := reflect.ValueOf("@foo::ThisMethodDoesNotExist")
expectedType := reflect.TypeOf(func() {})
示例2:
Expect(typeDef).NotTo(BeNil())
generatedType, err := typeDef.Generate(resolver)
Expect(err).NotTo(HaveOccurred())
Expect(generatedType).To(BeAssignableToTypeOf(&MockType{}))
generatedMock := generatedType.(*MockType)
Expect(generatedMock.BoolParameter).To(BeTrue())
Expect(generatedMock.StringParameter).To(Equal("1, two, drei"))
})
})
Context("when a func reference type is given", func() {
It("should generate the type", func() {
foo := &MockType{StringParameter: "Success!"}
container.InjectInstance("foo", foo)
typeDef := goldi.NewType(NewMockTypeFromStringFunc, "YEAH", "@foo::ReturnString")
generatedType, err := typeDef.Generate(resolver)
Expect(err).NotTo(HaveOccurred())
Expect(generatedType).To(BeAssignableToTypeOf(NewMockType()))
Expect(generatedType.(*MockType).StringParameter).To(Equal("Success! YEAH"))
})
})
Context("when a func reference type is given as variadic argument", func() {
It("should generate the type", func() {
foo := &MockType{StringParameter: "Success!"}
container.InjectInstance("foo", foo)
typeDef := goldi.NewType(NewVariadicMockTypeFuncs, "@foo::ReturnString", "@foo::ReturnString")
示例3:
BeforeEach(func() {
container = goldi.NewContainer(goldi.NewTypeRegistry(), map[string]interface{}{})
})
Describe("Configure", func() {
Context("when the type configurator has not been defined correctly", func() {
It("should return an error", func() {
someType := new(Foo)
configurator := goldi.NewTypeConfigurator("configurator", "Configure")
Expect(configurator.Configure(someType, container)).To(MatchError(`the configurator type "@configurator" has not been defined`))
})
})
Context("when the type configurator is no struct or pointer to struct", func() {
It("should return an error", func() {
container.InjectInstance("configurator", 42)
someType := new(Foo)
configurator := goldi.NewTypeConfigurator("configurator", "Configure")
Expect(configurator.Configure(someType, container)).To(MatchError("the configurator instance is no struct or pointer to struct but a int"))
})
})
Context("when the type configurator method does not exist", func() {
It("should return an error", func() {
someType := new(Foo)
configurator := goldi.NewTypeConfigurator("configurator", "Fooobar")
container.Register("configurator", goldi.NewInstanceType(&MyConfigurator{}))
Expect(configurator.Configure(someType, container)).To(MatchError(`the configurator does not have a method "Fooobar"`))
})
})