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

问题描述

我想用模拟提供程序测试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了解更多详细信息和示例

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...