Graphql 我怎样才能窥视‘useMutation’,以便看到传递的值是什么?

Graphql 我怎样才能窥视‘useMutation’,以便看到传递的值是什么?,graphql,jestjs,Graphql,Jestjs,我不想创建一个大规模的E2E测试,而是想验证usemotation从组件接收到了什么。在我的组件“POST”之前有很多业务逻辑,我想测试GraphQL变异函数是否正在接收数据的形状 在这种情况下,手动模拟查询没有提供价值,因为它跳过了我想要跟踪的业务逻辑。现在让查询返回完整数据和响应没有任何价值,因为我的组件将卸载,并且在返回成功数据后URL将更改 因此,理想情况下,我们只是在调用useVariationhook时停止测试 我希望做一些类似的事情: const mutationSpy = jes

我不想创建一个大规模的E2E测试,而是想验证
usemotation
从组件接收到了什么。在我的组件“POST”之前有很多业务逻辑,我想测试GraphQL变异函数是否正在接收数据的形状

在这种情况下,手动模拟查询没有提供价值,因为它跳过了我想要跟踪的业务逻辑。现在让查询返回完整数据和响应没有任何价值,因为我的组件将卸载,并且在返回成功数据后URL将更改

因此,理想情况下,我们只是在调用
useVariation
hook时停止测试

我希望做一些类似的事情:

const mutationSpy = jest.spyOn(graphQL, 'useMutation');
...
expect(mutationSpy).toHaveBeenCalledWith(myDataShape);

跟踪是否调用了变异的最佳方法是使用
@apollo/react testing
(react native)或
@apollo/client
(react)中的MockedProvider为模拟响应提供回调函数,该函数更改测试范围中的变量,以便在测试运行后可以对其进行检查。像这样的

以下是文件:

test.js

让createMutationCalled=false
常数模拟=[
{
要求
结果:()=>{
createMutationCalled=true
返回{data}
}
}
];
描述('测试',()=>{
test('should call createTicket mutation',async()=>{
常量{getByTestId}=render(
)
让输入=getByTestId('sr-description'))
let submit=getByTestId('sr-submit')
fireEvent.changeText(输入“测试文本”)
fireEvent.press(提交)
等待新的承诺(r=>setTimeout(r,0));
expect(createMutationCalled).toBe(true)
})
})

您正在使用阿波罗客户端(React)?导入的
useMutation
是什么包?
useMutation
来自
@apollo/react hooks
谢谢您的建议。我会再看一次。酷,这也是他们在文档中的做法。