graphql-tools,如何使用mockServer模拟" Mutation"?

时间:2018-04-20 10:22:50

标签: graphql-tools

我尝试使用mockServer的{​​{1}}来模拟graphql-tools

这是我的单元测试:

Mutation

但是,得到了一个错误:

  it('should update user name correctly', () => {
    mockserver
      .query(
        `{
      Mutation {
        updateUserName(id: 1, name: "du") {
          id
          name
        }
      }
    }`
      )
      .then(res => {
        console.log(res);
        expect(1).to.be.equal(1);
      });
  });

并且,我读了mock server test suites ✓ should get users correctly ✓ should get user by id correctly ✓ should update user name correctly { errors: [ { GraphQLError: Cannot query field "Mutation" on type "Query". at Object.Field (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/validation/rules/FieldsOnCorrectType.js:65:31) at Object.enter (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/language/visitor.js:324:29) at Object.enter (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/language/visitor.js:366:25) at visit (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/language/visitor.js:254:26) at visitUsingRules (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/validation/validate.js:74:22) at validate (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/validation/validate.js:59:10) at graphqlImpl (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/graphql.js:106:50) at /Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/graphql.js:66:223 at new Promise (<anonymous>) at Object.graphql (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql/graphql.js:63:10) at Object.query (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/graphql-tools/dist/mock.js:19:63) at Context.it (/Users/ldu020/workspace/apollo-server-express-starter/src/mockServer/index.spec.js:95:8) at callFn (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/mocha/lib/runnable.js:383:21) at Test.Runnable.run (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/mocha/lib/runnable.js:375:7) at Runner.runTest (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/mocha/lib/runner.js:446:10) at /Users/ldu020/workspace/apollo-server-express-starter/node_modules/mocha/lib/runner.js:564:12 at next (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/mocha/lib/runner.js:360:14) at /Users/ldu020/workspace/apollo-server-express-starter/node_modules/mocha/lib/runner.js:370:7 at next (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/mocha/lib/runner.js:294:14) at Immediate.<anonymous> (/Users/ldu020/workspace/apollo-server-express-starter/node_modules/mocha/lib/runner.js:338:5) at runCallback (timers.js:763:18) at tryOnImmediate (timers.js:734:5) at processImmediate (timers.js:716:5) message: 'Cannot query field "Mutation" on type "Query".', locations: [Array], path: undefined } ] } graphql-tools个文件。

interface.d.ts

显然,export interface IMockServer { query: (query: string, vars?: { [key: string]: any; }) => Promise<ExecutionResult>; } 中没有mutation功能。

mockServer是否支持mockServer

https://github.com/apollographql/graphql-tools/issues/279

1 个答案:

答案 0 :(得分:2)

它是您查询的结构。查询的结构应与GraphiQL中的结构非常相似,例如:
mutation { updateUserName(id: 1, name: "du") { id name } }

因此,您的代码看起来应该是这样的,在您的开头大括号 {

之前,变异关键字是查询中的第一个关键字
it('should update user name correctly', () => {
  mockserver
  .query(`mutation {
    updateUserName(id: 1, name: "du") {
      id
      name
    }
  }`)
  .then(res => {
    console.log(res);
    expect(1).to.be.equal(1);
  });
});