-1

テストでモックアウトしたい外部 API を呼び出す関数があります。

func ApiWrapper(...) (...) {
  client := resty.New()
  var r apiResponse
  apiPath := "..." // In the test will be http://localhost:{PORT}/path/to/endpoint
  _, e := client.R().SetResult(&r).Get(apiPath)
  ...
  return ...
}

テストは次のようになります。

func TestApiWrapper(t *testing.T) {
  client := resty.New()
  httpmock.ActivateNonDefault(client.GetClient())
  defer httpmock.DeactivateAndReset()
  mock_resp = `...`
  responder := httpmock.NewStringResponder(200, mock_resp)
  api_url := "same string used in the function"
  httpmock.RegisterResponder("GET", api_url, responder)
  res, e := ApiWrapper(...)
  ...
}

私が抱えている問題は、モックが使用されておらず、外部 API が CI で使用できないことです。

テストでは、クライアントには次のものがあります。

httpClient: *net/http.Client {
    Transport: net/http.RoundTripper(*github.com/jarcoal/httpmock.MockTransport)

クライアントが持っている機能では:

httpClient: *net/http.Client {
    Transport: net/http.RoundTripper(*net/http.Transport)
4

1 に答える 1