Test Redirection with RSpec and Capybara (Rails)

balanv picture balanv · Jun 27, 2012 · Viewed 32.4k times · Source

I just have learnt how cool RSpec and Cabybara is, and now working around it to learn writing actual test.

I am trying to check if after clicking a link, there is a redirection to a specific page. Below is the scenario


1) I have a page /projects/list
        - I have an anchor with html "Back" and it links to /projects/show

Below is the test i wrote in rspec

describe "Sample" do
  describe "GET /projects/list" do
    it "sample test" do
      visit "/projects/list"
      click_link "Back"
      assert_redirected_to "/projects/show" 
    end
  end
end

The test fails with a failure message like below

    Failure/Error: assert_redirected_to "/projects/show"
     ArgumentError:
       @request must be an ActionDispatch::Request

Please suggest me on how i should test the redirection and what am i doing wrong?

Answer

zetetic picture zetetic · Jun 29, 2012

Try current_path.should == "/projects/show"

Capybara also implements a current_url method for the fully qualified URL.

More info in the docs.

EDIT

Capybara now has a RSpec matcher called have_current_path, which you can use like: expect(page).to have_current_path(some_other_page_path) (thanks @bjliu)