chai-graphql

Chai アサーションライブラリの GraphQL レスポンスマッチャ
解析された JSON 応答とローカルオブジェクト応答の両方で動作します。
インストール
npm install --save-dev chai-graphql
API
メソッドは、データを繰り返し処理することなくレスポンスから "アンラップ" します。
assert.graphQl(response, [expectedData])
は、response.data
またはresponse.data.payload
とexpectedData
があれば 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' ])