【发布时间】:2020-03-06 05:04:15
【问题描述】:
我遇到了一个问题,我向外部 API 发出的请求在执行时工作正常,但是在运行 Jest/Enzyme 测试时它给了我一个 CORS 错误。有问题的函数是使用 API 中的 JsonRpc 实现,并使用 node-fetch 中的 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
有什么想法吗?
【问题讨论】:
-
你在浏览器中运行测试吗?因为 CORS 检查对于浏览器来说是典型的,但我相信对于 NodeJS 来说它不是预期的
标签: reactjs cors jestjs enzyme