Почему axios ведет себя иначе в Jest, чем изначально?

#javascript #axios #jestjs

#javascript #axios #jestjs

Вопрос:

Я провожу тестирование запущенного приложения в черном ящике, и Jest ведет себя выжидательно.

const axios = require(‘axios’)

 describe('the http service endpoints',() => {
  test('that the http service is accepting requests to the endpoint /health', () =>
    axios
      .get('http://0.0.0.0:3265/health')
      .then(res => {
        expect(res.status).toEqual(200)
      }))
})
  

Я получаю эту ошибку

ошибка console.error: перекрестное происхождение http://localhost запрещено

Но когда я запускаю этот же тест, используя собственное утверждение узлов и не шутя, axios ведет себя так, как я ожидал, и не выдает ошибок.

Комментарии:

1. Jest использует jsdom в качестве среды по умолчанию в тестах (ссылка: jestjs.io/docs/en/configuration.html#testenvironment-string ). Поэтому он пытается отправлять запросы, как в браузере. Если вы измените эту конфигурацию как узел, я думаю, ваша проблема будет решена. Просто поместите --env=node в скрипт npm или измените конфигурацию jest.

2. Правильно! Большое вам спасибо! Это сработало, если хотите, укажите это как ответ.

Ответ №1:

Jest использует jsdom в качестве среды по умолчанию в тестах

(ссылка: jestjs.io/docs/en/configuration.html#testenvironment-string ).

Поэтому он пытается отправлять запросы, как в браузере. Если вы измените эту конфигурацию как узел, я думаю, ваша проблема будет решена.

Просто поместите —env=node в сценарий npm или измените конфигурацию jest