编写GraphQLMutation的回调方法(onSuccess、onError)的Jest单元测试用例。
创始人
2024-12-05 09:30:12
0
  1. 首先,安装相关的依赖:
npm install --save-dev jest graphql jest-graphql-mocks
  1. 然后,编写一个名为mutation.test.js的测试文件,使用jest-graphql-mocks来模拟GraphQL请求和响应:
const { createMockedClient } = require('jest-graphql-mocks');
const { myMutation } = require('../myMutation');

describe('myMutation', () => {
  it('should call onSuccess callback when mutation is successful', async () => {
    const client = createMockedClient();
    client.setRequestHandler(myMutation, () => ({ data: { myMutation: true } }));

    const onSuccessMock = jest.fn();
    const onErrorMock = jest.fn();

    await myMutation({ client, onSuccess: onSuccessMock, onError: onErrorMock });

    expect(onSuccessMock).toHaveBeenCalledTimes(1);
    expect(onErrorMock).not.toHaveBeenCalled();
  });

  it('should call onError callback when mutation fails', async () => {
    const client = createMockedClient();
    client.setRequestHandler(myMutation, () => ({ errors: [{ message: 'Something went wrong' }] }));

    const onSuccessMock = jest.fn();
    const onErrorMock = jest.fn();

    await myMutation({ client, onSuccess: onSuccessMock, onError: onErrorMock });

    expect(onSuccessMock).not.toHaveBeenCalled();
    expect(onErrorMock).toHaveBeenCalledTimes(1);
  });
});
  1. 最后,编写GraphQL Mutation的实现文件myMutation.js
const MY_MUTATION = gql`
  mutation MyMutation {
    # Your mutation here
  }
`;

export function myMutation({ client, onSuccess, onError }) {
  return client
    .mutate({
      mutation: MY_MUTATION
    })
    .then(({ data }) => {
      onSuccess(data);
    })
    .catch(({ errors }) => {
      onError(errors);
    });
}

这样,我们就可以用Jest测试GraphQL Mutation的回调函数(onSuccess、onError)是否正确被调用了。

相关内容

热门资讯

透视辅助!红龙扑克竟然存在有挂... 透视辅助!红龙扑克竟然存在有挂,红龙扑克竟然是真的有挂(详细辅助工具教程)您好,,确实是有挂的,很多...
透视辅助!AAPOKEr原来有... 透视辅助!AAPOKEr原来有挂,aapoker有挂都是是真的有挂(详细辅助工具存在教程);1、许多...
我来教大家!德扑辅助工具,德扑... 我来教大家!德扑辅助工具,德扑之星隐藏竟然是真的有挂(详细安卓教程)运辅助工具,进入游戏界面。进入辅...
透视辅助!线上德州aapoke... 透视辅助!线上德州aapoker透明挂,aa扑克有外挂好像是有挂(详细挂教程)是一款可以让一直输的玩...
透视辅助!红龙扑克切实是有挂,... 透视辅助!红龙扑克切实是有挂,红龙扑克总是真的有挂(详细辅助工具教程)1、每个玩家都可以进行使用,快...
透视辅助!aApoker好像真... 透视辅助!aApoker好像真的是有挂,aapoker外挂好像存在有挂(详细辅助教程);一、aapo...
三分钟了解!微扑克辅助工具,微... 三分钟了解!微扑克辅助工具,微扑克规律原来有挂(详细有辅助挂教程)1、玩家可以在软件透明挂俱乐部对游...
1.9分钟了解!德扑之星的发牌... 1、1.9分钟了解!德扑之星的发牌是不是有问题,德扑胜率计算果然真的是有挂(详细有辅教程)2、进入游...
黑科技辅助挂!wopoker有... 1、黑科技辅助挂!wopoker有没有外挂,(Wepoke科技)一直是真的有挂(详细辅助德之星教程)...
透视辅助!微扑克竟然真的是有挂... 透视辅助!微扑克竟然真的是有挂,微扑克有辅助挂真是有挂(详细ai机器人教程)1、玩家可以在微扑克有辅...