2013-08-23 52 views
0

如果字段包含帶RSpec的2個字母字符串,測試的正確方法是什麼?我正在跟蹤一個我認爲在rails 2中工作的舊示例。它會創建新的Address實例,在其上設置無效值,然後在該實例上觸發valid?,最後檢查errors是否報告有錯誤。現在檢查屬性在RSpec中是否包含2個字母

it 'requires state to be of length 2' do 
     subject = Address.new 
     subject.state = 'Cal' 
     should_not be_valid 
     subject.errors.on(:state).should_not be_nil 
    end 

,Rails 3中沒有errors.on,所以我試着用

subject.errors[:state].should_not be_nil 

但這裏的問題是,errors[:attribute]Array而不是nil

回答

0

您仍然可以說

subject.errors[:state].should_not be_empty 
+0

這樣的作品,thanks.Just一個問題,在你看來是有一個更優選的測試呢? – Zed

+0

你可以使用shoulda驗證助手。 '它不應該允許_值(「Cal」)。for(:state)}' – usha

+0

好的,再次感謝。 – Zed

0

驗證錯誤現在在errors.messages

errors.messages.should be_present 
相關問題