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