【问题标题】:jest spy on graphql (mutate) query开玩笑监视 graphql(变异)查询
【发布时间】:2022-11-18 02:21:58
【问题描述】:

我有 2 个 mutate gql 查询,我需要在我的单元测试中模拟它们。对于单元测试,我使用的是反应测试库。在我的功能测试期间,调用了 2 个不同的 mutate,我必须找到一种方法来区分它们,因此在我的测试中,它将知道以正确的顺序调用了哪个。

这里有 2 个变异 gql:

export const closeMultipartUpload: any = gql`
    mutation closeMultipartUpload(
        $directoryID: String!
        $uploadID: String!
    ) {
        closeMultipartUpload(
            directoryID: $directoryID
            uploadID: $uploadID
        ) {
            versionID
        }
    }
`;

export const fileUploadMutation = gql`
    mutation createUploadUrl(
        $directoryID: String!
    ) {
        createUploadUrl(
            directoryID: $directoryID
            requesterID: $requesterID
        ) {
            url
            documentID
        }
    }
`;

模拟我在测试中使用的 API:

graphql.mutate = jest.fn().mockImplementation(() =>
  Promise.resolve({
    data: {
      'createUploadUrl': {
        'url': 'foo',
        'documentID': '123
      }
    },
  })
);

但我不能以相同的方式模拟另一个 API 调用,因为反应测试库可以识别哪个是哪个。我认为 spy on 可以提供帮助。但它没有,或者至少我没有正确使用它。

我会感谢你的帮助

【问题讨论】:

  • 你找到解决办法了吗?

标签: reactjs jestjs graphql react-testing-library


【解决方案1】:

拥有一个 Apollo Provider 可能是个好主意,并提供请求和响应的状态,如文档中演示的 https://www.apollographql.com/docs/react/development-testing/testing/

const mocks = [
  {
    request: {
      query: GET_DOG_QUERY,
      variables: {
        name: "Buck"
      }
    },
    result: {
      data: {
        dog: { id: "1", name: "Buck", breed: "bulldog" }
      }
    }
  }
];

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 2019-05-08
    • 2023-04-04
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    相关资源
    最近更新 更多