Jest returns "Network Error" when doing an authenticated request with axios

lllllll picture lllllll · Mar 8, 2017 · Viewed 19.3k times · Source

This seems a bit weird to me. I'm trying to test an actual (ie. real network) request with Jest.

These are the tested scenarios:

  • Test an external API (fixer.io) with no headers <--- This works
  • Test a local API server with headers <--- This does NOT work
  • Test same local API with headers from node terminal <--- This works

What could be the reason behind this behavior? And what is the solution?

//This WORKS
test('testing no headers', () => {
  return axios.get('http://api.fixer.io/latest')
        .then( res => console.log(res) )
});

//This DOES NOT work
test('testing no headers', () => {
  return axios.get('http://localhost:3000/users/4/profile', 
                      {headers:{authorization:`Bearer ${mytoken}`}})
        .then( res => console.log(res) )
});

//...

//Node Terminal
//This WORKS
> axios.get('http://localhost:3000/users/4/profile', 
                   {headers:{authorization:`Bearer ${mytoken}`}})
        .then( res => console.log(res) )

Answer

Daniele Dellafiore picture Daniele Dellafiore · Jun 5, 2017

It can be a Jest configuration issue. I solved forcing "node" as jest environment in package.json:

"jest": { "testEnvironment": "node" }

see docs: https://facebook.github.io/jest/docs/configuration.html#testenvironment-string