Hi everyone!
I would like to test some endpoints that make a request API call (particularly to google oauth API
and to its /tokeninfo
endpoint) and I wonder how can I mock that intern call to avoid execution during test and if is a good idea using Tesla.Mock. Im not sure how to intercept the real call to mock it.
Thank you folks!
A better approach is to use Mox. In config/test.exs
:
config :tesla, adapter: Tesla.MockAdapter
Then define the mock in test_helper.exs
:
Mox.defmock(Tesla.MockAdapter, for: Tesla.Adapter)
And then mock it in test:
defmodule ​MyTest do
use ExUnit.Case, async: true
test "some test" do
Mox.expect(Tesla.MockAdapter, :call, fn env, _opts ->
# return {:ok, modified_env}
end)
# some code that makes an HTTP request
end
end
3 Likes
I can’t speak toward Tesla.Mock, but I can second Mox and the “Roll Your Own” strategy Sophie DeBenedetto describes here.
.
1 Like