Ошибка CORS - ошибка: перекрестное происхождение http://localhost запрещено - только в тесте ReactJS / Jest - PullRequest
0 голосов
/ 10 ноября 2019

Я столкнулся с проблемой, когда выполняемый мной запрос к внешнему API работает нормально, но при запуске теста Jest / Enzyme он выдает ошибку CORS. Рассматриваемая функция использует реализацию JsonRpc из API и использует fetch из node-fetch. Не уверен, что есть параметры для CORS, которые можно где-то применить?

Я пробовал много вариантов асинхронного ожидания в среде тестирования Jest / Enzyme, но все еще сталкиваюсь с проблемами.

test("it should do something", done => {
    const component = shallow(<CustomComponent />)
    component.instance().customAsyncFunction( result => {
      expect(result.length).toEqual(5)
      done()
    })
    // return component.instance().customAsyncFunction().then(data => {
    //   expect(data.length).toEqual(5)
    // })
  })

Я пыталсявыше и несколько других методов (например, setTimeout и ожидание его) и получить ошибку CORS.

Я получаю следующие результаты:

 console.error
 node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/virtual-console.js:29
   Error: Cross origin http://localhost forbidden
       at dispatchError (...\node_modules\jest-environment-jsdom\node_modules\jsdom\lib\jsdom\living\xhr-utils.js:65:19)
       at Request.client.on.res (...\node_modules\jest-environment-jsdom\node_modules\jsdom\lib\jsdom\living\xmlhttprequest.js:679:38)
       at Request.emit (events.js:198:13)
       at Request.onRequestResponse (...\node_modules\request\request.js:1066:10)
       at ClientRequest.emit (events.js:203:15)
       at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:556:21)
       at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)
       at TLSSocket.socketOnData (_http_client.js:442:20) undefined

Есть идеи?

1 Ответ

0 голосов
/ 10 ноября 2019

1) то, что вы, вероятно, ищете, это вместо того, чтобы смоделировать обещание или любую другую функцию, выполняемую с помощью jest.mock (), а затем утверждать, что эта имитация была вызвана (с правильными параметрами). Jest-тесты - это модульные тесты, которыена самом деле не следует общаться с вашим API

2) скорее всего что-то с вашими env-переменными в тестовом режиме, для process.env.NODE_ENV установлено значение "test" во время шутки, которое может что-то менять или, возможно, один изваш собственный конфиг env vars

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...