将GraphQL查询传递给Apollo MockedProvider

时间:2018-10-29 12:30:27

标签: reactjs graphql apollo react-apollo

我有一个小的GraphQL查询,我想用Apollo的MockedProvider来模拟。

export const queryType = new GraphQLObjectType({
  name: 'Query',
  fields: {
    getUsername: {
      type: GraphQLString,
      resolve: ({ session }) => {
        if (session.isLoggedIn) return session.username;
        return null;
      }
    }
  }
});

export default new GraphQLSchema({ query: queryType, mutation: mutationType });

我尝试将其添加到mocks数组中,但是我不知道如何将查询转换为可接受的格式。我的代码如下所示:

const { getUsername } = queryType.getFields();
const mocks = [
  {
    request: { query: getUsername },
    result: { data: { getUsername: 'username' } }
  }
];

const app = (
  <MockedProvider mocks={mocks}>
    <App />
  </MockedProvider>
)

我试图将其包装在gql标签中,但它也不接受。如何在测试中模拟该查询?

1 个答案:

答案 0 :(得分:0)

您做错了。您必须像这样首先为您的查询创建一个响应。

const addLanguageMock = {
  request: {
    query: Loaction_Query,
    variables: {
      name: 'हिंदी',
      iso_code: 'hin',
      name_in_english: 'hindi'
    }
  },
  result: {
    data: {}
  }
};

然后您可以像这样传递它。

  const mocks = [addLanguageMock]
  <MockedProvider mocks={mocks}>
    <App />
  </MockedProvider>