How could I mock a specific api call similar to how python requests-mock works:
with requests_mock.mock() as m:
m.get('http://test.com', text='data')
requests.get('http://test.com').text
In this example every call to http://test.com
inside the with statement will be mocked
So in elixir, for example, I have this:
defmodule API do
# makes a call to an external API I dont want to test
def make_call do
...
end
end
defmodule Item do
alias API
# function I actually want to test
def build_request do
API.make_call
# stuff I want to test
end
end
So let's say I want to test build_request
mocking make_call
I tried this package https://github.com/jjh42/mock but what this package does is to override whole API module with for example a mock for make_call
method but you also lose all the other functions of the API module and I dont want that.
How could I mock that call?
Here in another example I saw https://hashrocket.com/blog/posts/mocking-api-s-with-elixir
# mocking a github api call directly
@github_api.make_request(:get, "/users/#{username}")
But it's the same issue, it mocks the request straight in the test, my issue is when the mock needs to be done in an inner function not straight away.
Aucun commentaire:
Enregistrer un commentaire