2011-03-18 53 views
6

以下formtastic形式複選框字段設置:使用水豚黃瓜測試服務,使得測試失敗,而:Formtastic複選框PARAMS通過水豚發送不同於通過實際應用

<%= semantic_form_for @store do |f| %> 
    <%= f.inputs do %> 
    <%= f.input :services, :as => :check_boxes, :collection => Service.all %> 
    <% end -%> 
<% end -%> 

正在發送壞params用於在實際應用發送正確的,這被罰款處理:

#cucumber steps using the boiler_plate capybara web_steps.rb: 
Given a "Mail Order" service 
...(steps for rest of the form)... 
When I check "Mail Order" 
And I press "Create Store" 
Then I should see "Store was successfully created." 
And I should see "Mail Order" 

#params sent by cucumber 
"store"=>{"services"=>["[\"4d8247ed7f5bfd2275000004\"]"] 

#params sent by app on manual test 
"store"=>{"services"=>["4d8247ed7f5bfd2275000004"]} 

雖然HTML表單本身呈現同樣的方式在兩種情況下:

<input id="store_services_4d8247ed7f5bfd2275000004" name="store[services][]" type="checkbox" value="4d8247ed7f5bfd2275000004" /> 

似乎在請求params構建過程中,當由Cucumber/Capybara提交時,該字段的表單鍵/值對的解析方式會有所不同。

其他人碰到過嗎?

+0

該解決方案可能應該變成一個「答案」 - 其他人可能會搜索(並找到)這個問題,但跳過它,認爲沒有解決方案。 – 2011-06-16 16:58:31

+0

我找不到回答我自己的問題的方法。可能沒有足夠的特權?我在meta網站上搜索了這個問題的答案,但沒有運氣。 – oliverbarnes 2011-06-17 21:25:18

+0

如果您已經登錄,您應該在這些評論下面有一個大框。如果這是你自己的問題,不要緊。 – 2011-06-18 20:34:36

回答

1

回答我的問題:

從水豚的作者,喬納斯尼克拉斯,導致我this rack-test patch which hasn't been committed yet

現在我只是用叉子和分支在補丁的生活裏指針:

gem 'rack-test', :git => 'https://github.com/econsultancy/rack-test.git', :branch => 'econsultancy-20110119' 

而這樣做的竅門。我想這個補丁很快就會合並,因爲它是在幾個月前提交的。

+0

感謝這個解決方案。我認爲我可以更新到機架測試的更新版本,因爲有兩個更新版本的機架測試。但Rails的3.0.x版本都依賴於機架測試0.5.7。所以bundle抱怨說它無法更新到我的rails 3.0應用程序的任何更高版本的機架測試。 – 2012-06-25 17:33:52