mandarvaze

mandarvaze

(UndefinedFunctionError) function HTTPoison.request/5 is undefined (module HTTPoison is not available

I am facing a unique(?) problem.

I have unit tests and integration tests

Both call the same set of functions.

All the integration tests pass (mix test --include integration test/integration/gateways/mercadopago_test.exs)

All the unit tests fail (mix test test/gateways/mercadopago_test.exs)

For every unit test , I get the same error :

** (UndefinedFunctionError) function HTTPoison.request/5 is undefined (module HTTPoison is not available)

Stack trace points to lib/gringotts/gateways/mercadopago.ex:264: Gringotts.Gateways.Mercadopago.commit/5

Searching for module not available points to solutions that do not apply.

Most suggest including httpoison in mix.exs - which was already have (https://github.com/aviabird/gringotts/blob/mercadopago-2020/mix.exs#L40)

Other suggestion is about elixirc_paths - which also taken care of (https://github.com/aviabird/gringotts/blob/mercadopago-2020/mix.exs#L19)

BTW, I’m a n00b at elixir, so I may be overlooking something obvious.

I’ve already asked for helped in local elixir discord channel. No luck.

Thanks for any suggestions/ideas.

Marked As Solved

al2o3cr

al2o3cr

All the unit tests start with a similar structure:

with_mock HTTPoison, post: fn _url, _body, _headers ->

that’s mocking the post function on HTTPoison. But the line that’s failing is using a lower-level HTTPoison function:

    res = HTTPoison.request(method, url, body, headers,
      opts ++ [params: [access_token: opts[:config][:access_token]]])

Under the hood, HTTPoison.post calls HTTPoison.request:

Also note this important detail from the Mock documentation

By default, only the functions being mocked can be accessed from within the test.

Also Liked

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

So, many versions of Elixir ago, you had to manage the applications list as you are doing here. That is no longer true and will cause issues. I’d remove that line entirely.

Have you tried the simple rm -rf _build and recompile approach?

Also, what version of elixir are you running? elixir --version

mandarvaze

mandarvaze

@al2o3cr What you say makes sense. I’m gonna use Bypass instead of Mock

But I’m wondering why do other two test (files) for cams and authorize.net that use similar pattern (and Mock) work ? I confirmed that these two directly use HTTPoison.post inside commit function - hence their with_mock block works.

Where Next?

Popular in Questions Top

srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
sacepums
Hey guys. I'm new to elixir and im really stocked about it. But I ran into a bit of problem - I need to convert a date sting, for examp...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
hpopp
To simplify some tasks at work, I wrote and published this package yesterday. It’s a simple macro that enables Access behaviour on struct...
New
jc00ke
Expanding on this topic: https://forum.elixirforum.net/t/map-typespec-question/19217 Let’s say I have a map with required and optional k...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
idi527
I’ve been re-reading swift book again and noticed that multiline strings there don’t have a trailing line break, unlike in elixir iex(2)...
New

Other popular topics Top

Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3268 119930 1237
New
srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
vac
Hi, I'm quite new in Elixir and I'm trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and ...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list....
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
beno
I will often find my self writing things similar to: case some_value do nil -> something() "" -> something() _ -> someth...
New

We're in Beta

About us Mission Statement