reactjs - 在 useEffect Hook 中使用 axios 取消 token 时如何修

我正在使用 axios 取消 token 在我的 useEffect Hook 中进行清理,如下所示。当我运行测试时,出现如下所示的错误。我正在使用 react 测试库和开 Jest 来测试我的应用程序。我还使用模拟服务 worker 来拦截和处理请求。有没有一种方法可以模拟 axios.CancelToken.source 调用来解决失败的测试?

UseEffect 钩子(Hook):

useEffect(() => {

 const source = axios.CancelToken.source()
 axios.get(URLS.GET_DATA,
  {
    cancelToken: source.token
  })
  .then(response => {
    setData(response.data)
  })
  .catch((error) => {
    if (axios.isCancel(error)) {
    } else {
      console.log('Handle Error')
    }
  })

return () => {
  source.cancel()
}

}, [building, numberOfDeletions, numberOfUpdates, numberOfAdds], [])

测试服务器服务 worker :

const server = setupServer(
rest.get('/api/data/'), (req, res, ctx) => {
return res(
  ctx.status(200),
  ctx.json({ data: data })
)})

失败测试:

it('should render title to page', () => {
const { getByText } = render(<EditIndex />)
const heading = getByText('Edit Items')

expect(heading.textContent).toEqual('Edit Items')
})

错误信息:

最佳答案

this中的第二个解决方案帖子对我有用。正如上面的评论所提到的,我已经在模拟 axios 并且我没有在模拟中定义 CancelToken 。我最终通过简单地传入 axios 来修改模拟,一切都通过了; CancelToken 不再是未定义的。

import axios from 'axios';
jest.mock('axios');

关于reactjs - 在 useEffect Hook 中使用 axios 取消 token 时如何修复失败的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64430627/

相关文章:

reactjs - Chrome,Edge - 禁用字段的自动填充/自动完成

android - x + 宽度必须 <= bitmap.width()

reactjs - typescript 错误对象的类型为 'unknown'

angular - 如何限制 NgSelect 下拉面板中显示的项目数?

html - 使一个 div 填充具有未指定尺寸的表格单元格的整个宽度和高度

asp.net-core - 我可以在 AspNetCore WebAPI 中将 Cancellat

python - 'google-api-python-client' distribution 在

javascript - 错误 : Jmeter: Typed variable declarati

javascript - 在输入焦点上移动/动画占位符

vue.js - 使用 vue 的故事书 - SassError : Undefined varia