如何使用 Capybara 访问控制器提供的参数 Rails 4

How to access a parameter supplied by controller with Capybara Rails 4

我正在尝试测试一个使用水豚创建模型新实例的表单。问题是 user_id 是由控制器在创建方法中提供的,而不是由以下形式提供的:

@contractor = Contractor.new(contractor_params.merge({user_id:  current_user.id}))

现在是否可以在我的 Capybara 测试中设置 user_id,或者在我的测试中以控制器可以访问的方式设置 current_user 变量?

是的,在你的测试中,在 before 块中,用创建的用户存根 current_user,就像这样(假设你使用的是 FactoryGirl):

let(:user) { FactoryGirl.create(:user) }

before do 
  controller.stub(:current_user).and_return(user)
end

当您的控制器点击 current_user 时,它将是您创建的 user