🎯 Intention


mesmontages-fr-dc7bbac5-6411510.jpg

Les Stub et les Mock sont un outil essentiel pour la construction de test unitaire, c’est pourquoi l’ensemble de l’équipe de dev doit maitriser ces notions

<aside> âś…

Pré-requis

✅ Points clés


<aside> ⌛ Temps indicatif : 1h

</aside>

Etape

Visuel / Exemple


👮‍♂️ Mock

Raison :

On se sert d’un mock quand notre test doit vérifier que la méthode est bien appelé

# Ici le test échoue si le job n'appel pas la méthode #email_envoye! de mon instance d'utilisateur
# Le test ne rentre pas réellement dans la méthode #email_envoye!
it "envoie email" do
	utilisateur = Utilisateur.new
	expect(utilisateur).to receive(:email_envoye!)

	MailerJob.perform_now(utilisateur)
end

🧑‍🦯 Stub

Raison :

On se sert d’un stub quand notre test a besoin d’appeler une méthode

# Ici le test n'échoue pas si le job n'appel pas la méthode #email_envoye! de mon instance d'utilisateur
# Le test ne rentre pas réellement dans la méthode #email_envoye!
it "envoie email" do
	utilisateur = Utilisateur.new
  allow(utilisateur).to receive(:email_envoye!)

	MailerJob.perform_now(utilisateur)
end

↩️ Spécifier une valeur de retour

Raison :

Cela peut être utile suivant les contextes de retourner une valeur spécifique

expect(utilisateur).to receive(:email_envoye!)
	.and_return(true)

allow(utilisateur).to receive(:email_envoye!)
	.and_return(false)

❌ Erreurs type à éviter