首页 > 解决方案 > 使用 vendored 导入模拟接口

问题描述

我正在使用 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/contextAPI 提供的上下文的实现(因此导入实际上是github.com/docker/docker/vendor/golang.org/x/net/context)。

如何创建接口以便客户端实现它?

标签: go

解决方案


推荐阅读