2011-05-17 42 views
10

我一直在使用Capybara進行集成/請求測試,但只是剛剛意識到我不能用它來查看測試。將webrat和水豚同時使用

This SO answer建議Webrat和Capybara可以串聯使用;但RSpec docs建議你必須在兩者之間進行選擇。 Here's another github thread,這表明webrat可以用於視圖和水豚的整合。

我發現如果將Webrat包含在我的gemfile中,我可以使用webrat查看沒有問題的視圖,但是我的水豚式集成測試不再有效。具體來說,我得到一個錯誤,用下面簡單的例子:

it "should have a Home page at '/'" do 
    visit '/' 
    page.should have_selector('title', :content => "Home page") 
end 

我得到的錯誤:

No response yet. Request a page first. 

什麼是最好的方式(如果有的話?),以獲得webrat和水豚喜歡海誓山盟?

+0

我遇到同樣的問題。我必須說,一個月前,我在一個不同的項目上一起使用沒有問題。似乎沒有工作了。另一件事,我試圖更新水豚1.0.0.beta1。儘管我收到了不同的錯誤信息。 – 2011-05-23 00:51:56

+0

我放棄了,只是開始使用水豚沒有webrat。我現在使用水豚的集成測試方法以迂迴的方式來測試我的觀點 - 絕對不是理想的,但會做。我相信有一種方法可以讓他們一起工作,讓我們希望有人能夠得到很好的答案! – 2011-05-23 01:20:45

+0

快速問題,你如何測試在控制器中使用水豚檢測和刪除動作?它似乎只有一個'訪問'行動,只能發出GET請求? – 2011-05-23 01:23:19

回答

11

通常沒有理由同時使用Webrat和Capybara。選一個(可能是水豚)。查看測試是一個壞主意,通常不需要;通常你的集成測試應該覆蓋這個基礎。

換句話說,修復您的測試策略,問題就會消失。

+0

另外,儘量避免使用RSpec進行面向用戶的測試。黃瓜在這方面要好得多。 – 2011-12-19 15:41:09

6

一般來說,我同意Marnen關於「只挑其中一個,可能是水豚」,但是使用它們的一個可能原因是逐漸遷移。假設你有一個很大的測試套件,並且你將它移植到Capybara,但是你想讓你的一些舊測試保持「Webrat驅動」一段時間。

雖然,我沒有找到這種情況下理想的解決方案,這是我做的:

# features/support/env.rb 
... 
if ENV['WITH_WEBRAT'].nil? 
    require 'capybara/rails' 
    require 'capybara/cucumber' 
    ... 
else 
    require 'webrat' 
    ... 
end 
... 

# config/cucumber.yml 
... 
default: --profile capybara 
capybara: <% std_opts %> --tags [email protected] features 
webrat: <% std_opts %> --tags @webrat features WITH_WEBRAT=1 
... 

# features/webrat.feature 
@webrat 
... 

# features/capybara.feature 
... 

現在,你可以做cucumber運行您只水豚,測試套件或cucumber -p webrat爲您的舊Webrat功能。

不理想,但它爲我工作。