Assumer ce code ruby:Mocha: Comment définir une attente pour une méthode d'instance?
class User
def self.failed_login!(email)
user = User.find_by_email(email)
if user
user.failed_login_count = user.failed_login_count + 1
user.save
end
end
end
Je veux écrire un test qui teste que user.save est jamais appelé lorsqu'un mail invalide est donnée. E.g .:
it "should not increment failed login count" do
User.expects(:save).never()
User.failed_login!("doesnotexist")
end
Ce test est actuellement réussi, mais il réussit également lorsque je fournis une adresse e-mail valide.
Comment puis-je définir l'attente en utilisant Mocha? (ou tout autre cadre moqueur) de sorte qu'il teste la méthode de sauvegarde de toute instance de l'utilisateur n'est jamais appelée?
(de préférence sans stubbing/se moquant de la méthode find_by_email, comme la mise en œuvre de la façon d'obtenir l'utilisateur pourrait changer à l'avenir)
Vive
Méfiez-vous simplement de l'exécuter avec des mpc RSpec, car cela affectera _all_ instances suivantes. Mocha tire le simulacre vers le bas comme prévu, par spec. – avocade