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.
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.
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