2
我想在我們的Ruby on Rails系統中測試一個案例,我們在x次失敗的登錄嘗試後鎖定用戶。我遇到的問題是試圖創建一個用戶已達到'鎖定'他的帳戶的號碼。我正在使用工廠來創建一個像這樣的用戶 -Rspec工廠問題 - 概念性問題?
Factory.define :locked_user, :class => User do |user|
user.name "Test Lock"
user.email "[email protected]"
user.password "blah1234"
user.password_confirmation "blah1234"
user.login_count 5
end
其中5是'魔術數字'。當我嘗試使用類似
@user = Factory(:locked_user)
它創建的數據庫 - 但新創建的用戶總是有login_count設置爲零用戶,所以它只是記錄了他在測試中。當我嘗試像這樣
@user = Factory.build(:locked_user)
的.build方法它設置用戶與login_count = 5像我想要的,但後來並沒有看到用戶爲有效,並不會嘗試登錄他們(即它給了我們'錯誤的用戶/密碼'錯誤,而不是'正確的用戶/密碼,但你被鎖定'錯誤)。我想我在這裏錯過了一些東西,讓RSpec拿起事實,這是有效的用戶,但帳戶應該被鎖定。有人可以幫助我設定好嗎?下面是整個desribe塊級
describe "with locked account" do
before(:each) do
@user = Factory.build(:locked_user)
@attr = { :email => @user.email, :password => @user.password}
end
it "should not allow signin with locked account" do
post :create, :session => @attr
flash.now[:error].should =~ /Invalid user locked out/i
end
end
我嘗試使用.update_attribute方法(根據我們的計劃實現情況更有意義),但它仍認爲last_login值是0,即使我給它新的值。有任何想法嗎? – Will 2011-06-01 17:35:35
這是一個執行錯誤。你可能有一些after_save或before_save鉤子覆蓋該值並將其設置爲0.我建議在繼續進行其餘的測試之前,先調試單個update_attribute行 - 編寫一些單元測試並首先解決該問題。 – 2011-06-01 18:05:31
好的,謝謝指點 - 非常感謝! – Will 2011-06-01 18:14:59