Reactjs React:jsdom13错误:错误:connect-econnrefered127.0.0.1:80
我已经为自定义挂钩创建了一个测试。所有测试都通过了,但我收到了错误,不确定如何找到根本原因。我已经试过了,但是我找不到任何有用的信息。 钩子只是有一个axios请求。我没有直接分配location.href的部分,这是我看到的另一件事,通常是导致此错误的原因Reactjs React:jsdom13错误:错误:connect-econnrefered127.0.0.1:80,reactjs,jestjs,react-testing-library,Reactjs,Jestjs,React Testing Library,我已经为自定义挂钩创建了一个测试。所有测试都通过了,但我收到了错误,不确定如何找到根本原因。我已经试过了,但是我找不到任何有用的信息。 钩子只是有一个axios请求。我没有直接分配location.href的部分,这是我看到的另一件事,通常是导致此错误的原因 import axios from 'axios' jest.mock('axios') describe('hooks', ()=>{ it('test custom hook', async()=>{ con
import axios from 'axios'
jest.mock('axios')
describe('hooks', ()=>{
it('test custom hook', async()=>{
const { result, waitForNextUpdate } = await renderHook(()=> customHook())
axios.get.mockResolvedValue(dataJSON)
expect(axios.get).toHaveBeenCalledTimes(1) // received 0
await waitForNextUpdate()
expect(axios.get).toHaveBeenCalledTimes(1) //received 2
})
})
错误:
console.error node_modules/jest-environment-jsdom-thirteen/node_modules/jsdom/lib/jsdom/virtual-console.js:29
Error: Error: connect ECONNREFUSED 127.0.0.1:80
at Object.dispatchError (C:\project\node_modules\jest-environment-jsdom-thirteen\node_modules\jsdom\lib\jsdom\living\xhr-utils.js:60:19)
at Request.client.on.err (C:\project\node_modules\jest-environment-jsdom-thirteen\node_modules\jsdom\lib\jsdom\living\xmlhttprequest.js:674:20)
at Request.emit (events.js:203:15)
at Request.onRequestError (C:\project\node_modules\request\request.js:877:8)
at ClientRequest.emit (events.js:198:13)
at Socket.socketErrorListener (_http_client.js:401:9)
at Socket.emit (events.js:198:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at process._tickCallback (internal/process/next_tick.js:63:19) undefined
jest配置:
"jest": {
"moduleNameMapper": {
"\\.(css|less|sass)$": "<rootDir>/_mocks_/styleMock.js"
},
"collectCoverageFrom": [
"**/*.{js,jsx,ts,tsx}",
"!<rootDir>/node_modules/",
"!src/index.js",
"!src/i18n.js",
"!<rootDir>/_mocks_/*",
"!src/setupProxy.js",
]
}
用户提供者:
import React, { useEffect } from 'react'
import { Loading } from 'components'
import UserContext from 'context/UserContext'
import { customHook } from 'hooks/User/customHook'
const UserProvider = () => {
const { userDetails } = customHook()
const renderContent = () => {
if (userDetails.loading) {
return (
<div className='loading'>
<Loading size='large' data-testid='userProfileLoadingId' className='loading-content' />
</div>
)
} else return dashbaordComponent
}
const contextValue = {
userDetail: userDetails.userInfo,
}
return (
<UserContext.Provider value={contextValue}>
{renderContent()}
</UserContext.Provider>
)
}
import React,{useffect}来自“React”
从“组件”导入{Loading}
从“context/UserContext”导入UserContext
从“hooks/User/customHook”导入{customHook}
const UserProvider=()=>{
const{userDetails}=customHook()
常量renderContent=()=>{
if(userDetails.loading){
返回(
)
}否则返回dashbaordComponent
}
常量上下文值={
userDetail:userDetails.userInfo,
}
返回(
{renderContent()}
)
}
发布的代码中有几个问题。在\uuuu mocks\uuuu
中是否有手动模拟axios
?现在还不清楚,如果它被嘲笑,它怎么可能发出真正的请求。请确认将axios.get.mockResolvedValueOnce(dataJSON)
替换为axios.get.mockResolvedValueOnce(dataJSON)
是否会删除此错误,以便缩小范围。没有针对axios的手动模拟…我只是使用了自动模拟axios模块的jest.mock('axios')
。切换到axios.get.mockResolvedValue
没有删除错误,我添加了expect(axios.get).toHaveBeenCalledTimes(1)
,但由于调用了两次而失败。如果我在测试中的waitForNextUpdate()
和axios调用之前添加该行,它将被调用0次。不确定这是否有用jest.mock('axios')
可以从\uuuumocks\uuuuuu
中选择与实际不同的手动模拟。如果没有,情况就不是这样。然后,问题特定于执行请求的其他测试。现在还不知道这是发生在这个套房还是其他房间。您必须缩小导致此问题的测试范围。是的,这个钩子中的逻辑是错误的,将导致多个请求。它怎么会错呢?或者它是错的呢?也许这就是问题所在?这是唯一给出此错误的测试。。。。当我尝试测试钩子时,在发布的代码中有几个问题。在\uuuu mocks\uuuu
中是否有手动模拟axios
?现在还不清楚,如果它被嘲笑,它怎么可能发出真正的请求。请确认将axios.get.mockResolvedValueOnce(dataJSON)
替换为axios.get.mockResolvedValueOnce(dataJSON)
是否会删除此错误,以便缩小范围。没有针对axios的手动模拟…我只是使用了自动模拟axios模块的jest.mock('axios')
。切换到axios.get.mockResolvedValue
没有删除错误,我添加了expect(axios.get).toHaveBeenCalledTimes(1)
,但由于调用了两次而失败。如果我在测试中的waitForNextUpdate()
和axios调用之前添加该行,它将被调用0次。不确定这是否有用jest.mock('axios')
可以从\uuuumocks\uuuuuu
中选择与实际不同的手动模拟。如果没有,情况就不是这样。然后,问题特定于执行请求的其他测试。现在还不知道这是发生在这个套房还是其他房间。您必须缩小导致此问题的测试范围。是的,这个钩子中的逻辑是错误的,将导致多个请求。它怎么会错呢?或者它是错的呢?也许这就是问题所在?这是唯一给出此错误的测试。。。。当我试着测试钩子的时候
import React, { useEffect } from 'react'
import { Loading } from 'components'
import UserContext from 'context/UserContext'
import { customHook } from 'hooks/User/customHook'
const UserProvider = () => {
const { userDetails } = customHook()
const renderContent = () => {
if (userDetails.loading) {
return (
<div className='loading'>
<Loading size='large' data-testid='userProfileLoadingId' className='loading-content' />
</div>
)
} else return dashbaordComponent
}
const contextValue = {
userDetail: userDetails.userInfo,
}
return (
<UserContext.Provider value={contextValue}>
{renderContent()}
</UserContext.Provider>
)
}