reactjs - TypeError:无法读取未定义的属性“useGETForQueries” - GraphQL Hooks
问题描述
我正在为我的项目使用 graphQL 挂钩,我遇到了测试问题,它会呈现此错误:
TypeError: Cannot read property 'useGETForQueries' of undefined
它在属于搜索组件的这行代码中失败:
const [searchManual, { loading: searchLoading, data, error }] = useManualQuery(SEARCH_QUERY);
默认情况下useGETForQuereies
是false
,但不确定为什么在运行测试时会出现此错误。项目运行正常,只是测试用例。我已经明确添加了该变量的布尔值GraphQlClient
graphql拦截器JS文件
const gqlAxios = axios.create()
gqlAxios.interceptors.response.use(
function (response) {
if(response.status === 401 || response.status === 403 )
window.location.href = config.api.LOGIN_URL;
return response;
},
function (error) {
console.log("responseError", error);
return Promise.reject(error);
}
)
gqlAxios.interceptors.request.use(
function (config) {
config = {
...config,
headers: {
...config.headers,
'session': getCookieValue()
}
}
return config;
}
)
const fixed = config.api.APP_GQL_HOST;
const url = fixed + 'graphql';
export const client = new GraphQLClient({ url, fetch: buildAxiosFetch(gqlAxios), useGETForQueries: false });
常量将client
被导出index.js
并用作ClientContext.Provider
.
const Wrapped = (
<ClientContext.Provider value={client}>
<App />
</ClientContext.Provider>
)
ReactDOM.render(
Wrapped, document.getElementById('root')
);
这可能是来自 jsdom 的错误,这是运行测试的实际控制台错误:
console.error node_modules/jsdom/lib/jsdom/virtual-console.js:29
Error: Uncaught [TypeError: Cannot read property 'useGETForQueries' of undefined]
如果是这样,如何解决?我只是想解决通过一个简单的测试用例:
it('Expect component in the document', () => {
const { getByTestId } = render(<Search />);
const component = getByTestId("test");
expect(component).toBeInTheDocument();
});
我需要添加额外的配置吗?我想使用msw
,模拟服务工作者,但我遇到了这个错误,无法继续前进。有没有人遇到过这个错误graphql hooks
?另外你对这个图书馆有什么体验?优点是轻巧,但在测试方面似乎对用户不友好。与阿波罗的任何比较。感谢您对这个问题的见解。
解决方案
推荐阅读
- reactjs - 如何在 ckeditor4-react 中添加自定义插件?
- sql - 如何通过 SQL Server 获取特定时间段的数据
- python - 用pylightxl读取excel文件
- sas - SAS EG - 按日期拆分的单个数据集与包含所有日期的单个附加数据集
- java - 我继续在嵌套 if 的 for 循环中获得无限循环
- python - 如何使云 Firestore 规则适用于 python 程序?
- python - Raspberry - cron 自动化问题
- swift - 底栏在 SwiftUI 中变得可见
- python - 如何在记事本++中垂直对齐制表符分隔值
- javascript - 按“=”后清除javascript计算器中的显示