如何在graphql-tools addMockFunctionsToSchema中返回GraphQL错误?

tgk*_*tgk 7 apollo-client graphql-tools

我想graphql-tools/addMockFunctionsToSchema按照以下模式在模拟解析器中模拟错误响应:

const mocks = {
  ...,
  Mutation: () => ({
    getToken: (_, { password }) => {
      if (password === 'password') {
        return { value: casual.uuid }
      } else {
        throw new Error('Incorrect email or password')
      }
    }
  })
}

const schema = makeExecutableSchema({`
  type Token { value: ID! }
  type Mutation {
     getToken(email: String!, password: String!): Token
  }
`});

addMockFunctionsToSchema({ schema, mocks});
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,并且确实返回GraphQL错误,但是:

  1. 看起来这只是返回错误,因为这是内部服务器错误,并在此上抛出。
  2. 我想模拟一个实际的GraphQL错误响应,指示用户输入无效

den*_*try 1

我今天刚好在研究这个问题。事实证明,您应该只返回错误而不是抛出错误。

  Mutation: () => ({
    getToken: (_, { password }) => {
      if (password === 'password') {
        return { value: casual.uuid }
      } else {
        return new Error('Incorrect email or password')
      }
    }
  })
Run Code Online (Sandbox Code Playgroud)