如何使用 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
。
我正在尝试测试一个使用水豚创建模型新实例的表单。问题是 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
。