本文介绍了Rspec 和水豚,visit 和 get 方法的区别,关于 current_path 对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我可能在这里混淆了架子和水豚方法
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
第二次测试失败:
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代码>.
A before(:each)
block, sets the current_path to /users/51
, so it looks like it remains that way when using get
.
我只想在这里检查:
- visit 和 current_path 是否来自水豚,而 get 来自机架?
- current_path 对象是否一定需要您使用 visit 方法来保持更新?
- 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?
推荐答案
您的问题是一个共享问题并且是 在 Jose Valim 的一篇文章中描述.
Your issue is a shared issue and was described in a post by Jose Valim.
简而言之,在集成测试中,只使用visit
.
To be short, in integration tests, only use visit
.
这篇关于Rspec 和水豚,visit 和 get 方法的区别,关于 current_path 对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!