关于current_path对象,Rspec和capybara,visit和get方法之间的区别

时间:2012-06-18 19:52:30

标签: ruby-on-rails rspec capybara

我可能会混淆机架和水豚的方法

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

第二次测试失败了:

     Failure/Error: specify { current_path.should eq(edit_user_path(admin)) }

       expected: "/users/51/edit"
            got: "/users/51"

       (compared using ==)

before(:each)块,将current_path设置为/users/51,因此在使用get时看起来仍然如此。

我只想在这里查看:

  • 访问 current_path 来自水豚,而获取来自机架?
  • current_path 对象是否必须要求您使用访问方法,以便更新?

1 个答案:

答案 0 :(得分:6)

您的问题是一个共同问题,并且是described in a post by Jose Valim

简而言之,在集成测试中,只使用visit