4

我可能在这里混淆了机架和水豚方法

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.

我只想在这里检查:

  • visitcurrent_path来自 capybara,而get来自rack?
  • current_path对象是否必须要求您使用访问方法才能保持更新?
4

1 回答 1

7

您的问题是一个共享问题,并在 Jose Valim 的一篇文章中进行了描述

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

于 2012-06-18T19:57:18.443 回答