2012-08-12 70 views
1

好吧我不知道我错过了建立水豚,但在测试访问链接似乎不工作。所以我有一个3.2的应用程序,我有我的specs_helper设置像这样:水豚访问不工作

require "spork" 

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

    Capybara.javascript_driver = :selenium 

    Capybara.default_wait_time = 5 

    include Devise::TestHelpers # see spec/support/devise.rb 
include CarrierWave::Test::Matchers 
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 
include New_spec_helpers 

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

    config.mock_with :rspec 


    config.fixture_path = "#{::Rails.root}/spec/fixtures" 

    config.use_transactional_fixtures = false 


    config.before :each do 


     Capybara.default_selector = :css 
     if Capybara.current_driver == :rack_test 
     DatabaseCleaner.strategy = :transaction 
     else 
     DatabaseCleaner.strategy = :truncation 
     end 
     DatabaseCleaner.start 


    end 

    config.after do 
     DatabaseCleaner.clean 
    end 
    end 

end 

Spork.each_run do 
    FactoryGirl.factories.clear 
    FactoryGirl.define do 
    sequence(:code) { |n| "code#{n}" } 
    sequence(:title) { |n| "title#{n}" } 
    end 

    Dir[Rails.root.join("spec/factories/**/*.rb")].each{|f| load f} 
    PortfolioNew::Application.reload_routes! 
end 

然后我的测试设置是这样的:

before(:each) do 
    build_projects 
    visit(projects_path) 
    end 

    it "test js" , :js=>true do 
    current_path.should == projects_path 
    end 

但是,所有我得到的回报是:

Failure/Error: current_path.should == projects_path 
     expected: "/projects" 
      got: nil (using ==) 

我检查了我的路线和项目路径绝对正确并且正常工作。什么问题是会受到欢迎

回答

1

好吧,我发现这个问题的评论对这个类似的帖子Rails 3 rspec + capybara - current_path is nil?

发现与旧水平测试中留下的水豚相关的网络冲突。

因此,对于任何感兴趣的人,我只是评论了我的gemfile和所有的好!

+0

很高兴您设法解决问题!网络钓鱼/水豚的事情可以是一个真正的痛苦... – 2012-08-13 21:24:36

+0

欢呼它是让我疯狂! :) – 2012-08-13 21:42:11

0

任何想法尝试visit呼叫移动到it块:

before(:each) do 
    build_projects 
end 

it "test js" , :js=>true do 
    visit(projects_path) 
    current_path.should == projects_path 
end 
+0

没有相同的回应,感谢您反馈任何其他想法? – 2012-08-13 20:40:32