[RUBY] Tester le résolveur GraphQL avec rspec

introduction

Comment écrivez-vous le test graphql? Vous pouvez définir une requête et la tester, mais c'est un peu ennuyeux de nos jours. Par conséquent, je vais vous expliquer comment tester le résolveur défini en requête ou en mutation avec rspec.

Exemple de mutation

Par exemple, disons que vous avez défini la mutation suivante.

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

C'est simple, mais c'est une mutation qui obtient un identifiant et crée un utilisateur. La cible de ce test est cette résolution.

écrire rspce

Maintenant, je voudrais écrire rspec.

create_user_rspec.rb


require 'rails_helper'

RSpec.describe CreateUser, type: :request do
  describe 'resolver' do
    it 'l'utilisateur a été créé' do
      mutation = CreateUser.new(field: nil, object: nil, context:{})
      mutation.resolve(id: [Utilisateur à créer_id])
      expect(..).to eq ..
    end

Tout d'abord, créez une instance de la classe CreateUser, qui est une classe de mutation. Je pense que le champ d'argument et l'objet peuvent fondamentalement être nuls. Pour le contexte, vous pouvez également inclure current_user dans certains cas. Dans ce cas, ce sera context: {current_user: User.first}.

Il est pratique de pouvoir entrer directement dans le contexte. Ensuite, si vous lisez la méthode de résolution de la mutation créée, le traitement dans la résolution définie sur le test sera exécuté. Cela rend les tests graphql beaucoup plus faciles!

Recommended Posts

Tester le résolveur GraphQL avec rspec
[Rails] Test avec RSpec
Testez Nokogiri avec Rspec.
Copier et coller le test avec RSpec
[rails] Faisons un test unitaire avec Rspec!
[Ruby on Rails] Afficher le test avec RSpec
[Ruby on Rails] Test du contrôleur avec RSpec
[Ruby on Rails] Test de modèle avec RSpec
Mutation avec GraphQL
[Pour les débutants] Testez l'enregistrement des utilisateurs avec RSpec
Test d'intégration avec Gradle
Utiliser Webmock avec Rspec
Tester automatiquement avec la jauge
Test de charge avec JMeter
Faites un test unitaire avec Junit.
Tester l'API Web avec junit
Implémenter GraphQL avec Spring Boot
Client GraphQL commençant par Ruby
[Rails] Code de test à l'aide de Rspec
[Rails] À propos du test de réponse Rspec
Comment effacer l'image de test après avoir exécuté le test Rspec à l'aide de CarrierWave
Comprendre la couverture du code avec Rspec, le framework de test Ruby on Rails
Téléchargement d'images à l'aide de CarrierWave ~ Test Rspec ~
Test de l'API REST à l'aide de REST Assured Part 2
Couverture de test de sortie avec Clover + Gradle
[Rails5] Rspec -Test d'unité lors de l'imbrication-
À propos du test d'application RSpec (test unitaire)
[Java] Tester des méthodes privées avec JUnit
J'ai essayé GraphQL avec Spring Boot
Tester les relations d'inclusion de liste avec AssertJ
Contrôleur de cadre de test Spring avec Junit
[RSpec] Test unitaire (avec gem: factory_bot)