Rspec and capybara, difference between visit and get methods, with regards to the current_path object

capybara, rspec, ruby-on-rails

Solution

Your issue is a shared issue and was described in a post by Jose Valim.

To be short, in integration tests, only use `visit`.

Problem

I'm possibly confusing rack and capybara methods here ``` let!(:admin){FactoryGirl.create(:admin)} # test passes describe "visiting #edit page" do before { visit edit_user_path(admin) } specify { current_path.should eq(edit_user_path(admin)) } end # test fails describe "getting #edit page" do before { get edit_user_path(admin) } specify { current_path.should eq(edit_user_path(admin)) } end ``` The second test fails with: ``` Failure/Error: specify { current_path.should eq(edit_user_path(admin)) } expected: "/users/51/edit" got: "/users/51" (compared using ==) ``` A `before(:each)` block, sets the current_path to `/users/51`, so it looks like it remains that way when using `get`. I just want to check here: - do visit and current_path come from capybara, whereas get comes from rack? - does the current_path object necessarily require you to use the visit method, in order to keep it updated?

Original source