2011-05-06 29 views
3

我只是不知道確切的方法來字是什麼..但如何使用Capybara獲取,顯示,發佈,放入控制器測試?

這告訴我「無響應。先請求一個頁面。'

it "should list searches" do 
    get 'index' 
    page.should have_selector('tr#search-1') 
end 

是不是要這樣呢?

it "should list searches" do 
    get 'index' do 
    page.should have_selector('tr#search-1') 
    end 
end 

這樣似乎並不雖然實際測試任何東西。

什麼是正確的方法?

回答

6

根據to this,水豚不支持使用默認驅動程序的PUT和DELETE請求。 PUT和DELETE通常用JavaScript來僞造,以適應基於REST的體系結構。

我還沒有檢查,但我相信你可以使用PUT和DELETE與水豚,如果你使它的JS兼容的驅動程序之一,如硒。

0

您通常使用visit與水豚訪問頁面,我認爲。

it 'should list searches' do 
    visit '/' 
    page.should have_selector('tr#search-1') 
end 
+1

雖然檢查了RubyDoc的機架測試驅動程序。 http://rubydoc.info/github/jnicklas/capybara/master/Capybara/RackTest/Driver它已經獲取,放置,刪除和發佈方法(以及通常的訪問)。如果這些做我懷疑他們做的事情,那麼它們對於測試其餘控制器會非常有用。我無法弄清楚如何使用它們。 – 2011-05-06 12:03:07

5

get,post等方法是functional test interface for Rails控制器測試的一部分,它是一個完全獨立的測試系統。你不能和水豚一起使用它們。

對於GET請求,請改用Capybara的visit方法。

對於其他請求類型(POST,PUT,...),請執行用戶的操作,然後訪問帶有表單的頁面進行填寫和提交。或者,如果你正在測試一個API,寫你的控制器功能測試,而無需使用水豚,就像這樣:

post :index 
response.status.should == 200 
response.body.should contain('Hello World') 

又見喬納斯對why you shouldn't test APIs with Capybara崗位。

相關問題