[RUBY] Testen Sie den GraphQL-Resolver mit rspec

Einführung

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.

Beispiel einer Mutation

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.

schreibe rspce

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

Testen Sie den GraphQL-Resolver mit rspec
[Schienen] Test mit RSpec
Testen Sie Nokogiri mit Rspec.
Kopieren Sie den Test und fügen Sie ihn mit RSpec ein
[Schienen] Machen wir einen Unit-Test mit Rspec!
[Ruby on Rails] Test mit RSpec anzeigen
[Ruby on Rails] Controller-Test mit RSpec
[Ruby on Rails] Modelltest mit RSpec
Mutation mit GraphQL
[Für Anfänger] Testen Sie die Benutzerregistrierung bei RSpec
Integrationstest mit Gradle
Verwenden Sie Webmock mit Rspec
Automatisch mit Messgerät testen
Lasttest mit JMeter
Machen Sie einen Unit-Test mit Junit.
Testen Sie die Web-API mit junit
Implementieren Sie GraphQL mit Spring Boot
GraphQL Client beginnend mit Ruby
[Rails] Testcode mit Rspec
[Rails] Informationen zum Rspec-Antworttest
So löschen Sie das Testbild, nachdem Sie den Rspec-Test mit CarrierWave ausgeführt haben
Verstehen Sie die Codeabdeckung mit Rspec, dem Ruby on Rails-Testframework
Bild-Upload mit CarrierWave ~ Rspec-Test ~
REST-API-Test mit REST Assured Part 2
Ausgabe Testabdeckung mit Klee + Gradle
[Rails5] Rspec -Einheitentest beim Verschachteln-
Über App-Tests RSpec (Unit Test)
[Java] Testen Sie private Methoden mit JUnit
Ich habe GraphQL mit Spring Boot ausprobiert
Einschlussbeziehungen der Testliste zu AssertJ
Testen Sie den Spring Framework Controller mit Junit
[RSpec] Unit Test (mit gem: factory_bot)