redux-api-middleware引发获取未定义

时间:2019-01-02 15:13:25

标签: redux jestjs redux-api-middleware

我最近将redux-api-middleware从2.3.0升级到了3.0.1,使用jest@22.2.1运行测试时,我得到了这个ReferenceError

ReferenceError: fetch is not defined

  19 | export function sortPolicyChain (payload: Array<ChainPolicy>): SortPolicyChainAction {
  20 |   return { type: 'SORT_POLICY_CHAIN', payload }
> 21 | }
  22 |
  23 | export type UpdatePolicyInChainAction = { type: 'UPDATE_POLICY_IN_CHAIN', policyConfig: ChainPolicy }
  24 | export function updatePolicyInChain (policyConfig: ChainPolicy): UpdatePolicyInChainAction {

  at Object.<anonymous> (node_modules/redux-api-middleware/lib/index.cjs.js:404:3)
  at Object.<anonymous> (app/javascript/src/Policies/actions/PolicyChain.jsx:21:27)
  at Object.<anonymous> (spec/javascripts/Policies/actions/PolicyChain.spec.jsx:3:20)

stacktrace指向 PolicyChain.jsx 中的这一行:

export function fetchChain (serviceId: string): RSSAAction {
  return {
    [RSAA]: {
      endpoint: `/admin/api/services/${serviceId}/proxy/policies.json`,
      method: 'GET',
      credentials: 'same-origin',
      types: [REQUEST, SUCCESS, FAILURE]
    }
  }
}

根据documentation here

  

如果提供,则fetch选项必须是符合以下条件的函数:   提取API。 否则,将使用全局获取。

但是似乎找不到全局提取。有什么想法吗?

代码库可以在github中找到。

2 个答案:

答案 0 :(得分:0)

发生这种情况是因为Jest在Node.js内部运行,而Node.js没有全局fetch()。您可以通过安装isomorphic-fetch并将其添加到Jest setupFiles中来解决此问题:

require('isomorphic-fetch');

答案 1 :(得分:0)

createMiddleware与您自己的提取编译功能一起使用

https://github.com/agraboso/redux-api-middleware#createmiddlewareoptions