我最近将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]
}
}
}
如果提供,则fetch选项必须是符合以下条件的函数: 提取API。 否则,将使用全局获取。
但是似乎找不到全局提取。有什么想法吗?
代码库可以在github中找到。
答案 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