# Using context.Context to mock API clients

DevFeed: [Using context.Context to mock API clients](<https://devfeed.tech/articles/using-context-context-to-mock-api-clients-11789.md>)

Original publisher: [Read original article](<https://incident.io/blog/golang-client-mocks>)

Author: Lawrence Jones

Published: 2021-12-21T00:00:00Z

Content type: article

Language: en

Sources: [The incident.io Blog](<https://devfeed.tech/sources/the-incident-io-blog.md>)

Topics: [Mocking](<https://devfeed.tech/topics/mocking.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [API](<https://devfeed.tech/topics/api.md>), [Slack](<https://devfeed.tech/topics/slack.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [developer](<https://devfeed.tech/tags/developer.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [http](<https://devfeed.tech/tags/http.md>), [incident](<https://devfeed.tech/tags/incident.md>), [incident-channel](<https://devfeed.tech/tags/incident-channel.md>), [incident-management](<https://devfeed.tech/tags/incident-management.md>), [incident-response](<https://devfeed.tech/tags/incident-response.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [outage](<https://devfeed.tech/tags/outage.md>), [post-mortem](<https://devfeed.tech/tags/post-mortem.md>), [slack](<https://devfeed.tech/tags/slack.md>), [slack-incident](<https://devfeed.tech/tags/slack-incident.md>)

## AI overview

This article presents a Go pattern for mocking external API clients. It recommends defining a compatible interface, generating that interface with interfacer, and generating a gomock implementation for tests. The approach keeps dependency injection simple and ensures code throughout a call stack uses the same mock client.

## Source excerpt

We've found a pattern to mock external client libraries while keeping code simple, reducing the number of injection spots and ensuring all the code down a callstack uses the same mock client.