Comment tester ActiveRecord rappels avec RSpec?
Comment tester l'exemple suivant?
class Post < ActiveRecord::Base
belongs_to :discussion, touch: true
end
OriginalL'auteur Hermine D. | 2010-04-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir un message d'attente:
Cet exemple utilise Factory Girl, mais vous pouvez utiliser des accessoires ou des objets fantaisie.
Ce n'est pas vraiment une "bonne" solution 1) c'est lent parce que vous frapper de la base de données et 2) vous n'êtes pas de test que le tactile m'a appelé dans le cadre de after_save rappel, il pourrait être frappé par l'un des validations ou des rappels qui se produisent dans le cadre de l'enregistrement d'un AR enregistrement.
D'accord. Ce qui est une meilleure approche?
fait un argument valable. À l'aide de Shoulda rappel de rapprochement, comme suggéré dans l'autre réponse est une approche. Vous pouvez également envisager l'omission d'un test de la fonction de rappel lui-même, et tout simplement de vérifier que la DB ligne a été touché. Évidemment, ce n'est plus lente, mais elle est plus facile à écrire et à maintenir le test, et vous êtes essais de comportement au lieu de mise en œuvre.
OriginalL'auteur zetetic
Tout d'abord
Si tout ce que vous essayez de faire est d'affirmer que la
touch: true
option est définie sur votre association, alors vous pouvez simplement faire ce qui suit:Deuxièmement
Pour tester les rappels en général, lire sur.
Toutes les autres réponses ici ont deux défauts:
Ils ont besoin d'un coup sur la base de données, qui peut être lent.
Ils ne déterminent pas la qui de rappel est appelée au cours d'une
save!
Au lieu de cela, utilisez la Shoulda Rappel De Rapprochement, qui ne nécessite pas de base de données frapper et vous pouvez définir le rappel que vous êtes à vérifier l'existence d'.
Installation
Installer le Shoulda Rappel De Rapprochement avec Bundler:
D'utilisation
Merci à Battre pour l'écriture de cette grande bibliothèque.
OriginalL'auteur Joshua Pinter
Vous pouvez vous moquer de la #touche d'appel, ou de vérifier les effets de votre rappel sur elle.
OriginalL'auteur François Beausoleil