Assume this ruby code:
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
I want to write a test that tests that user.save is never called when an invalid email is given. E.g.:
it "should not increment failed login count" do
User.expects(:save).never()
User.failed_login!("doesnotexist")
end
This test currently passes, but it also passes when I provide a valid email address.
How do I set up the expectation using Mocha? (or any other mocking framework) such that it tests the save method of any User instance is never called?
(preferably without stubbing/mocking the find_by_email method, as the implementation of how to get the user might change in the future)
Cheers
For others that might have stumbled unto this, I found the answer in another post that was dealing with RR as the mocking framework... in Mocha you can do this:
User.any_instance.expects(:save).never()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With