假設這個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設置期望值? (或任何其他模擬框架),以便它測試任何用戶實例的保存方法永遠不會被調用?
(最好沒有磕碰/嘲諷find_by_email方法,爲如何讓用戶在將來可能會改變實現)
乾杯
只要小心運行這與RSpec模擬,因爲它會影響_all_下面的實例。按預期,摩卡將模擬量拉低。 – avocade 2011-03-13 16:52:58