2012-12-13 42 views
0

最初我用黃瓜和水豚寫了我的測試,並且工作得很好。爲什麼我無法從我的Rspec測試中訪問Rails的URL助手?

然後我切換到使用Rpsec和水豚,並且工作得很好。

然後我試圖讓資產管道工作,並突然我的測試中的URL助手停止工作,我刪除了我的gemlock文件。

錯誤示例:

Failure/Error: visit report_areas_path(@report) 
NoMethodError: 
    undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007f978c64e058> 
# ./spec/features/area_spec.rb:12:in `block (3 levels) in <top (required)>' 

我想獲得的URL傭工再次工作,所以我的測試中可以指導我,我做完實現資產的管道。我怎樣才能解決這個問題?

我所有的測試都在/ spec/features中。

相關軟件如下...

/spec/spec_helper.rb:

require 'rubygems' 
require 'spork' 

Spork.prefork do 
end 

Spork.each_run do 
    # This code will be run each time you run your specs.  
end  

ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 

require 'capybara/rspec' 
require 'capybara/rails' 
require 'capybara/dsl' 
require 'capybara-screenshot/rspec' 

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    config.mock_with :rspec 
    config.fail_fast = true 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 
    config.use_transactional_fixtures = true 
    config.before(:each) { ActionMailer::Base.deliveries.clear } 
    config.use_instantiated_fixtures = false 
    config.include(Capybara, :type => :integration) 
end 

的Gemfile:

source 'http://rubygems.org' 

gem 'rails' 
gem 'activesupport' 
gem 'actionmailer' 
gem 'mail' 
gem 'railties' 
gem 'compass' 
gem 'pg' 
gem 'sass' 
gem 'haml' 
gem 'haml-rails' 
gem 'susy' 
gem 'jquery-rails' 
gem 'google-analytics-rails' 
gem 'declarative_authorization' 
gem 'authlogic', '3.1.0' 
gem 'simple_form' 
gem 'country-select' 
gem 'rails3-generators' 
gem 'hirb' 
gem 'debugger' 
gem 'redis' 
gem 'RedCloth' 
gem 'friendly_id' 
gem 'high_voltage' 
gem 'validatious' 
gem 'houdini' 
gem 'growl-rspec' 
gem 'interactive_rspec' 
gem "rspec-rerun" 

group :development do 
    gem 'taps' 
    gem "better_errors" 
    gem "binding_of_caller" 
end 

group :test do 
    gem 'capybara' 
    gem 'rspec-rails', '2.11' 
    gem 'database_cleaner', '0.6.7' 
    gem 'launchy' 
    gem 'spork', '~> 1.0rc' 
    gem 'growl' 
    gem 'capybara-screenshot' 
end 

group :assets do 
    gem 'sass-rails' 
    gem 'coffee-rails' 
    gem 'compass-rails' 
    gem 'compass-susy-plugin' 
    gem 'fancy-buttons' 
    gem 'jquery-ui-rails' 
    gem 'uglifier' 
end 

/spec/features/area_spec.rb :

require 'spec_helper' 

describe Area do 

    before(:each) do 
    @report = Report.create(:name => "The Testivate Retail Site Search Benchmark", :short_name => "Search") 
    end 

    describe "Guest" do 

    it 'cannot list' do 
     visit report_areas_path(@report) 
     page.current_path.should == root_path 
    end 

    end 

    describe "Customer" do 

    it 'cannot list' do 
     @user = User.create(:username => 'Virginia', :password => 'password', :password_confirmation => 'password', :email => '[email protected]') 
     @role = Role.create(:name => "customer") 
     @assignment = Assignment.create(:user_id => @user.id, :role_id => @role.id) 
     visit login_path 
     fill_in 'Username', :with => @user.username 
     fill_in 'Password', :with => @user.password 
     click_on 'Login' 
     visit report_areas_path(@report) 
     page.current_path.should == root_path 
    end 

    end 

    describe "Admin" do 

    before(:each) do 
     @user = User.create(username: 'Virginia', password: 'pass', password_confirmation: 'pass', email: '[email protected]') 
     @role = Role.create(:name => "admin")  
     @assignment = Assignment.create(user_id: @user.id, role_id: @role.id) 
     visit login_path 
     fill_in 'Username', :with => @user.username 
     fill_in 'Password', :with => @user.password 
     click_on 'Login' 
     visit report_path(@report) 
     click_on "New Area" 
     fill_in 'Name', :with => "Search box" 
     click_on 'Create Area' 
    end 

    it 'can create' do 
     page.current_path.should == report_area_path(@report, Area.last) 
     page.should have_content("Search box") 
     page.should have_content("The Testivate Retail Site Search Benchmark") 
    end 

    it 'can list' do 
     click_link 'List Areas' 
     page.current_path.should == report_areas_path(@report) 
     page.should have_content("Search box") 
     page.should have_content("The Testivate Retail Site Search Benchmark") 
    end 

    it 'can area' do 
     click_link 'Edit Area' 
     fill_in 'Name', :with => "Search fox" 
     click_on 'Update Area' 
     page.current_path.should == report_area_path(@report, Area.last) 
     page.should have_content("Search fox") 
     page.should_not have_content("Search box") 
     page.should have_content("The Testivate Retail Site Search Benchmark") 
    end 

    it 'can delete' do 
     click_link 'Delete Area' 
     page.current_path.should == report_areas_path(@report) 
     page.should_not have_content("Search box") 
     page.should have_content("The Testivate Retail Site Search Benchmark") 
    end 

    describe "must pass validations" do 

     before(:each) do 
     click_link 'Edit Area' 
     end 

     it "must have a name" do 
     fill_in 'Name', :with => "" 
     click_on 'Update Area' 
     page.should have_content("Please enter a name for this area.") 
     end 

    end 

    end 

end 
+0

BTW,我已經試過Rspec的有和無叉勺,並作爲'捆綁高管rspec',每次都得到相同的結果。 –

+0

您是否將水豚更新爲最新版本?這可能不適用於其他寶石/紅寶石。嘗試降級到之前的版本。 – zetetic

+0

我們可以看到失敗規範的實際代碼嗎? – sevenseacat

回答

1

的解決方案是升級到最新的RSpec的護欄

相關問題