Ответ 1
Попробуйте current_path.should == "/projects/show"
Capybara также реализует метод current_url
для полного URL-адреса.
Дополнительная информация в docs.
Я только что узнал, насколько крутой RSpec и Cabybara, и теперь он работает над этим, чтобы научиться писать фактический тест.
Я пытаюсь проверить, если после нажатия ссылки есть перенаправление на определенную страницу. Ниже приведен сценарий
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
Сбой теста с сообщением об ошибке, как показано ниже
Failure/Error: assert_redirected_to "/projects/show" ArgumentError: @request must be an ActionDispatch::Request
Пожалуйста, предложите мне, как я должен проверить перенаправление и что я делаю неправильно?
Попробуйте current_path.should == "/projects/show"
Capybara также реализует метод current_url
для полного URL-адреса.
Дополнительная информация в docs.
Я не уверен, что это может быть то, что вам нужно, но в моих тестах я предпочитаю такой подход:
...
subject { page }
...
before do
visit some_path_path
# do anything else you need to be redirected
end
it "should redirect to some other page" do
expect(page.current_path).to eq some_other_page_path
end
Из Разработать wiki:
В Rails при перенаправлении приложения стойки (подобно тому, как Warden/Devise перенаправляет вас на страницу входа в систему), ответ не будет соответствующим образом обновлен сеансом интеграции. Как следствие, помощник assert_redirected_to не работает.
Также эта страница имеет ту же информацию: Rspec убедитесь, что мы закончили с правильным путем
Итак, вам нужно будет проверить, что вы сейчас находитесь на этом URL-адресе, а не проверять, что вы перенаправлены на него.
Вам нужно использовать маршрут, например:
assert_redirected_to projects_path
а не
assert_redirected_to "/projects/show"