假设这段 Ruby 代码:
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
我想编写一个测试,以测试当给出无效电子邮件时,永远不会调用user.save。例如:
it "should not increment failed login count" do
User.expects(:save).never()
User.failed_login!("doesnotexist")
end
这个测试目前通过了,但只要我提供一个有效的电子邮件地址,它也会通过。
我该如何使用Mocha(或任何其他模拟框架)设置期望,使其测试任何User实例的save方法都不会被调用?
最好不要存根/模拟find_by_email方法,因为将来获取用户的实现可能会更改。
谢谢