2012-12-25 37 views
5

我建立用於rspec的測試樣品應用,我跟着以下步驟 在Gemfile中:無法設置Rspec的&豚中的Rails 3.2

gem "rspec-rails", :group => [:test, :development] 
group :test do 
    gem "factory_girl_rails" 
    gem "capybara" 
    gem "guard-rspec" 
end 

然後執行下面的步驟:

  1. 捆綁。
  2. rails g rspec:install。
  3. mkdir規格/支持規格/型號規格/路由。

增加了 「要求水豚/ rspec的」 我的spec_helper文件

創建如下一個樣本測試:

require 'spec_helper' 
describe "Users" do 
    describe " List users" do 
    it "List all users" do 
     get users_path 
     page.has_content?('List Users') 
    end 
    end 
end 

,但它不工作,提示以下錯誤:


undefined local variable or method `page' 

*我懷疑我沒有正確配置水豚,讓我知道配置水豚的正確方法。

回答

5

得到了包括水豚DSL符合規範幫手

config.include Capybara::DSL 
+1

如果是您的解決方案,請接受此答案。我的觀點是,爲了符合Capybara 2.0和RSpec在你的** spec/**目錄結構中的期望,你最好修改你的配置;看看我的答案中的兩個鏈接的細節。 –

9

因爲你沒在你的Gemfile指定水豚版本後的工作,我想你已經有了版本>= 2.0,這意味着任何使用page的測試應該在規範/功能目錄下。

看一看有關更多信息,以下鏈接:

如果你不想使用規格/功能目錄,你應該能夠以下列方式將測試標記爲feature

require 'spec_helper' 
describe "Users" do 
    describe " List users", type: :feature do 
    it "List all users" do 
     get users_path 
     page.has_content?('List Users') 
    end 
    end 
end 
+2

移動我的測試文件從規格/要求 - >規格/功能爲我工作。沒有更多的訪問錯誤。謝謝! – prodigerati

0

它值得一試的新水豚DSL集成測試(請注意功能目錄):

# spec/features/user_list_spec.rb 
require 'spec_helper' 

feature 'User list' do 
    scenario 'List all users' do 
    visit users_path 
    expect(page).to have_content 'List Users' 
    end 
end 

我使用RSpec的2.0期望的語法,與水豚DSL一起寫了一篇博客文章的一些詳細信息End-to-end testing with RSpec integration tests and Capybarafeature/scenarios

0

您也可以將其添加到您的spec_helper中。rb:

require 'capybara/rspec' 
相關問題