如何在 apollo 客户端中模拟联合类型

How to mock a union type in apollo client

我想使用模拟提供程序测试 apollo 客户端,它可以通过简单的查询和更改正常工作。但是对于寄存器突变,我有类型的响应

register(data: $data) {
      ... on Error {
        error {
          path
          message
        }
      }
      ... on RegisterSuccess {
        user {
          email
          _id
          username
        }
      }
    }

我已经通过以下方式用 apollo 客户端模拟了这个响应

const mocks = [
      {
        request: {
          query: RegisterMutation,
          variables: {
            data: {
              email: 'test',
              username: 'test',
              password: 'test',
            },
          },
        },
        result: {
          data: {
            register: {
              error: [
                {
                  path: 'email',
                  message: 'Email already in use',
                },
              ],
            },
          },
        },
      },
    ];

但这不起作用并给出错误,

Warning: An unhandled error was caught from submitForm() Error: No more mocked responses for the query: mutation Register($data: RegisterInput!) {
      register(data: $data) {
        ... on Error {
          error {
            path
            message
          }
        }
        ... on RegisterSuccess {
          user {
            email
            _id
            username
          }
        }
      }
    }
    , variables: {"data":{"email":"","username":"","password":""}}

其实我这边有个小错误。我不能通过

{
   email: 'test',
   username: 'test',
   password: 'test',
}

此对象作为变量中的数据,因为组件期望所有三个都为空字符串。所以通过这个

{
  email: '',
  username: '',
  password: '',
}

帮我解决了这个问题。 请参阅此 github issue 以获取更多详细信息和示例