Wie schreibt ihr den Graphql-Test? Sie können eine Abfrage definieren und testen, aber es ist heutzutage etwas ärgerlich. Daher werde ich erklären, wie der in Abfrage oder Mutation definierte Resolver mit rspec getestet wird.
Angenommen, Sie haben die folgende Mutation definiert.
mutation.rb
module Mutations
class CreateUser < BaseMutation
argument :id, ID, required: true
field :user, ObjectTypes::UserType, null: false
def resolve(id: nil)
user = ::User.create!(id: id)
{
user: user
}
end
end
end
Es ist einfach, aber es ist eine Mutation, die eine ID erhält und einen Benutzer erstellt. Das Ziel dieses Tests ist diese Lösung.
Jetzt möchte ich rspec schreiben.
create_user_rspec.rb
require 'rails_helper'
RSpec.describe CreateUser, type: :request do
describe 'resolver' do
it 'Benutzer wurde erstellt' do
mutation = CreateUser.new(field: nil, object: nil, context:{})
mutation.resolve(id: [Benutzer zu erstellen_id])
expect(..).to eq ..
end
Erstellen Sie zunächst eine Instanz der Klasse "CreateUser", bei der es sich um eine Mutationsklasse handelt. Ich denke, dass das Argumentfeld und das Objekt grundsätzlich null sein können. Für den Kontext können Sie in einigen Fällen auch "current_user" einschließen. In diesem Fall ist es "context: {current_user: User.first}".
Es ist praktisch, den Kontext direkt eingeben zu können. Wenn Sie dann die Auflösungsmethode der erstellten Mutation lesen, wird die Verarbeitung in der im Test definierten Auflösung ausgeführt. Dies erleichtert das Testen von Graphql erheblich!
Recommended Posts