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
<aside> ⌛ Temps indicatif : 1h
</aside>
expectation
) d’appeler une méthodeRaison :
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
allow
) d’appeler une méthodeRaison :
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
and_return
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)