chai-graphql  
  
 
用于 Chai 断言库的 GraphQL 响应匹配器
适用于解析后的 JSON 响应和本地对象响应。
安装
npm install --save-dev chai-graphql
API
方法将“解开”响应中的数据和/或有效负载,以减少测试的重复性。
- assert.graphQl(response, [expectedData])对- response.data或- response.data.payload和- expectedData(如果存在)执行深度相等比较。如果- response.errors中存在任何错误,则抛出异常。返回- response.data
- assert.graphQLSubset(response, [subsetOfExpectedData])对- response.data或- response.data.payload和 expectedData(如果存在)执行子集匹配。如果- response.errors中存在任何错误,则抛出异常。返回- response.data
- assert.graphQLError(response, [errorMatcher])如果不存在任何- response.errors则抛出异常,返回- response.errors。- errorMatcher可以是字符串、正则表达式或字符串或正则表达式数组。在字符串或正则表达式形式中,错误的 message 属性将被- match()与- errorMatcher匹配。在数组形式中,每个- errorMatcher按顺序针对每个错误进行测试。如果匹配器数量大于或小于错误数量,则会抛出异常。
用法
在您的设置中
import chai from 'chai'
import chaiGraphQL from 'chai-graphql'
chai.use(chaiGraphQL)
在您的 spec.js 中
var goodResponse = {
  data: {
    foo: 'bar'
  }
}
// Passes
assert.graphQL(goodResponse, { foo: 'bar' })
assert.graphQLSubset(goodResponse, { foo: 'bar' })
assert.graphQL(goodResponse)
assert.graphQLSubset(goodResponse)
assert.graphQLSubset(goodResponse, { })
assert.notGraphQLError(goodResponse)
expect(goodResponse).to.be.graphQl({ foo: 'bar' })
// Fails
assert.graphQL(goodResponse, { foo: 'FAIL' })
assert.graphQL(goodResponse, { })
assert.graphQLError(goodResponse)
expect(goodResponse).to.be.graphQLError()
const badResponse = {
  errors: [
    {
      message: 'Error message',
      stack: 'Prints if present'
    },
    new GraphQLError('GraphQL Error Object'),
    new Error('Regular Error')
  ]
}
// Passes
assert.graphQLError(badResponse)
expect(badResponse).to.be.graphQLError()
assert.graphQLError(badResponse, 'Error message')
assert.graphQLError(badResponse, /GraphQL Error Object/)
assert.graphQLError(badResponse, [
  'Error message',
  /GraphQL Error Object/
])
// fails
assert.graphQL(badResponse, { foo: 'bar' })
assert.graphQL(badResponse)
assert.notGraphQLError(badResponse)
expect(badResponse).to.be.graphQl({ foo: 'bar' })
assert.graphQLError(badResponse, 'Rando Error')
assert.graphQLError(badResponse, [ 'Error message' ])