I am having trouble writing unit tests in Go for a rather common use-case/pattern.
Imagine, if you will, something like this: package main type Resource struct { name string} type ResourceManager interface { GetResource(id string) (*Resource, error) GetAllResources() ([]*Resource, error)} type ResourceManagerImpl struct {} func (r *ResourceManagerImpl) GetResource(id string) (*Resource, error) { resource := &Resource{} var err error // fetch resource. // ... return resource, err} func (r *ResourceManagerImpl) GetAllResources() ([]*Resource, error) { var resources []*Resource var err error // for _, id := range ids { // resource = r.GetResource(id) // resources = append(resources, resource) // } return resources, err} It's a common pattern to have the GetAllResources invoke GetResource repeatedly as-needed. I can use gomock or testify to test all permutations of GetResource. But, when testing GetAllResource, I'd like to mock GetResource. Otherwise, testing would become sort-of-a nightmare. This is how one would do it in easymock or mockito in case of Java using partial mocks. But, it's not clear how the same could be achieved in Golang. Specifically, I couldn't find how to partially mock the struct. Most suggestions revolve around breaking such structs but in this case, the struct is already at its bare minimum. It seems like a fair ask to not break the ResourceManager interface (into single and multi) for the sake of testing as that would not make much sense and would be kludgy at best and wouldn't scale well as more such methods make into the interface. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/3c22e3fc-b3ad-47e7-9e41-400856423e58%40googlegroups.com.