gpt4 book ai didi

apollo-client - 使用 `createMockClient` 测试非 react 代码?

转载 作者:行者123 更新时间:2023-12-05 04:42:52 26 4
gpt4 key购买 nike

我有一个混合应用程序,将 Apollo 用于 React 和非 React 代码。但是,我找不到关于使用 apollo 客户端而不是使用 MockedProvider 测试非 react 代码的文档或代码示例。但是,我确实注意到 apollo 从测试目录中导出了一个模拟客户端。

import { createMockClient } from '@apollo/client/testing';

我还没有找到关于这个 API 的任何文档,我想知道它是否打算公开使用,如果不是,支持的方法是什么。

我需要它的原因很简单:当使用 Next.js 的 SSR 和/或 SSG 功能时,数据获取和实际数据呈现被拆分为单独的函数。所以抓取代码不是用React,而是Node.js抓取数据。因此,我使用 apolloClient.query 来获取我需要的数据。

当尝试在测试中围绕该获取代码包装一个 React 组件时,将 MockedProvider 包装在 apolloClient 的查询方法总是为模拟查询返回 undefined 的周围 - 所以这似乎只适用于 useQuery Hook ?

你知道如何在非 react 代码中模拟客户端吗?提前感谢您的支持。如果您需要我提供任何进一步的信息,请随时询问。

问候,Horstcredible

最佳答案

我处于类似的位置,我想使用 MockedProvider 并模拟客户端类,而不是使用此处记录的 useQuery:https://www.apollographql.com/docs/react/development-testing/testing/

虽然似乎没有记录,createMockClient来自 '@apollo/client/testing'可以传递与 MockedProvider 相同的模拟在没有 useQuery 的情况下进行模拟。这些示例假设您有一个 MockedProvider:

export const mockGetAssetById = async (id: Number): Promise<any> => {
const client = createMockClient(mocks, GetAsset)
const data = await client.query({
query: GetAsset,
variables: id,
})
return data
}

完成相同的:

const { data } = useQuery(
GetAsset,
{ variables: { id } }
)

关于apollo-client - 使用 `createMockClient` 测试非 react 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69756493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com