本文介绍了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.

我只想在这里检查:

  • visitcurrent_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 对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 23:32