chai-graphql npm バージョン ビルド状況 devDependency の状況

Chai アサーションライブラリの GraphQL レスポンスマッチャ

解析された JSON 応答とローカルオブジェクト応答の両方で動作します。

インストール

npm install --save-dev chai-graphql

API

メソッドは、データを繰り返し処理することなくレスポンスから "アンラップ" します。

  • assert.graphQl(response, [expectedData]) は、response.dataまたはresponse.data.payloadexpectedDataがあれば deep equals を実行します。 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は文字列、正規表現または文字列または正規表現の配列にすることができます。 文字列または正規表現の形式では、エラーのメッセージプロパティがerrorMatcherによってmatch()されます。 配列の形式では、各errorMatcherは順に各エラーに対してテストされます。 エラーより多いまたは少ない数のMatcherが存在するとスローされます。

使用方法

セットアップで

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' ])