Hi, I’m getting the following error message in my tests, and I’m not sure where they come from. I can’t see any difference to Tesla.Mock — tesla v1.8.0, except for async: true
, but setting that to false doesn’t change anything.
I have other tests in the same project that also use Tesla.Mock, which don’t have this problem, and I couldn’t find a difference there either. Mocking works when I use mock_global
and async: false
, but that breaks a lot of other testcases, so that’s not an option.
I have 2 tests that fail because of this. They both reference the same process #PID<0.902.0>
in the error message
Any help would be appreciated. Thanks
above_mock: #PID<0.914.0>
above_post: #PID<0.914.0>
1) test ... (...)
test/my_app/redacted_test.exs:292
** (Tesla.Mock.Error) There is no mock set for process #PID<0.902.0>.
Use Tesla.Mock.mock/1 to mock HTTP requests.
See https://github.com/teamon/tesla#testing
stacktrace:
(tesla 1.8.0) lib/tesla/mock.ex:206: Tesla.Mock.call/2
(tesla 1.8.0) lib/tesla/middleware/timeout.ex:59: anonymous fn/1 in Tesla.Middleware.Timeout.safe_async/2
(elixir 1.15.7) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
(elixir 1.15.7) lib/task/supervised.ex:36: Task.Supervised.reply/4
# config
config :tesla, adapter: Tesla.Mock
# Test file
def MyApp.RedactedTest do
use MyApp.DataCase, async: true
import Tesla.Mock
setup :general_setup
describe "describe" do
test "..." do
IO.inspect(self(), label: :above_mock)
mock(fn _ -> json(%{translations: []}) end)
call_tesla_deep_in_this_function()
end
end
end
# Implementation
defmodule MyApp.Client do
def client(opts) do
middlewares = [...]
Tesla.client(middlewares)
end
def call_service(client, body) do
IO.inspect(self(), label: :above_post)
Tesla.post(client, "path", body)
end
end
# call_service is called like this
client = Client.client([...])
body = "body here"
Client.call_service(client, body)