2011-08-05 90 views
0

RSpec2不包含have_tag測試助手。使用webrat的have_taghave_selector代替是不可能的,因爲Webrat和Rails 3還不兼容。有沒有辦法寫出有用的RSpec視圖測試?可以使用assert_select而不是have_tag,但可以使用Test::Unit首先進行測試。或者不再推薦編寫RSpec視圖測試,因爲與Capybara或黃瓜的集成測試更好?RSpec使用Rails3和RSpec2查看測試

回答

0

Webrat造成了太多的麻煩,也可以使用RSpec的Capybara。水豚DSL(具有功能has_selector?,has_content?等)可用於以下RSpec測試:spec/requests,spec/acceptancespec/integration

如果使用水豚(〜> 1.0.1)的最新版本 - 舊版本一樣0.4.0將不支持這一點 - 並添加以下行到spec_helper.rb文件

require "capybara/rspec" 
require "capybara/rails" 

那麼你可以寫例如下面的RSpec請求測試

require 'spec_helper' 

describe "Posts" do 
    describe "GET /blog" do 
    it "should get blog posts" do 
     get blog_path 
     response.status.should be(200) 
     response.body.should have_selector "div#blog_header" 
     response.body.should have_selector "div#blog_posts" 
    end 
    end 
end 
1

實際上,Webrat與Rails 3一起工作。我測試了這個,並且我能夠使用have_selector匹配器(has_tag沒有工作)。

你可以看看這個Google group discussion。基本上,你不需要在webrat自述中提及的Webrat.configure塊,並按照郵件列表的解決方案,在您的spec_helper.rb加上這些行:

include Webrat::Methods 
include Webrat::Matchers 

正如你所看到的,Webrat並非如此更新了,所以是的,你可能會更好地使用Cucumber(+ Capybara)進行集成測試。

+0

它只適用於那裏提到的版本,'> = 0.7.2.pre',::git =>'http://github.com/kalv/ webrat.git'? – 0x4a6f4672

+0

@ 0x4a6f4672,我沒有注意到在他們之前的討論中,所以我只是使用了webrat的常規風格。我基本上只是在我的Gemfile中添加了'gem'webrat''。 – mikong