Я использую Docker API и передаю Client
такой функции:
func DoStuffToDocker(ctx context.Context, c *client.Client, ID string) {
c.ContainerInspect(ctx, ID)
// do stuff
}
Я создаю интерфейс, который определяет используемые мной функции, чтобы я мог пройти макет в моих тестах:
type dockerClient interface {
ContainerInspect(ctx context.Context, containerID string) (types.ContainerJSON, error)
}
... и затем измените подпись моей функции, чтобы принять интерфейс вместо клиента.
Моя проблема в том, что компилятор жалуется, что клиент не реализует интерфейс. Из того, что я могу сказать, причина в том, что реализация ContainerInspect
использует контекст golang.org/x/net/context
, который реализовал API (таким образом, импорт на самом деле github.com/docker/docker/vendor/golang.org/x/net/context
).
Как я могу создать интерфейс, чтобы клиент реализовал его?