2011-08-16 56 views
0

我測試的形式。它看起來像:如何使用Rails中3 HTML ::選擇?

<form accept-charset="UTF-8" action="/the_action" method="post"> 
    <select id="id" name="z[z_id]"> 
    <option value="7">Foo</option> 
    <option value="11">Bar</option> 
    </select> 
</form> 

你如何讓所有的選項成用於測試的陣列(7,11)?這些值是模型的id,所以我想測試每個對象的某些屬性。

我閱讀API文檔(http://api.rubyonrails.org/)對HTML ::選擇,但它並沒有幫助。

還使用Rails指南(http://guides.rubyonrails.org/testing.html#testing-views)中的assert_select,但沒有弄清楚如何以除了測試相等的方式使用值。

你有任何建議引導性的資源?

謝謝。

編輯:這是在視圖代碼:

<%= form_tag(:action => :the_action) do %> 
<%= select :model_name, :model_id, Model.where(:user_id => 1).collect{|m| [m.full_name, m.id]}, :selected => selected_value, :include_blank => false %> 
<%= submit_tag "view model" %> 
<% end %> 

有這個功能沒有控制器代碼。

回答

0

聽起來像是在通過視圖測試模型。有什麼理由不只是在模型試驗檢查選擇在視圖中的存在,並測試模型的屬性?

編輯:

所以我會解決這個問題的辦法是建立在模型

def options_for_user(user_id) 
    self.where(user_id => 1).collect{|m| [m.full_name, m.id]} 
end 

的方法,然後我只需調用從視圖這種方法,並測試選項在單元測試中創建。也許這只是我 - 但它使測試這種事情很容易...

+0

嗯...我實際上測試控制器,以確保它只顯示正確的名稱......但這是唯一的方法我可以考慮測試這個。 –

+1

但控制器只能做路由 - 無論它顯示應該被傳遞到從模型視圖。也許這會幫助你粘貼相關的模型和控制器代碼 - 如果我在這裏沒有得到某些東西,但是它聽起來是錯誤的,我會道歉的... – chrispanda

+0

沒問題。謝謝你的幫助。我將代碼添加到問題中。沒有相關的控制器代碼。所有上述功能都發生在視圖中。 –