我在看 Michael Hartl 的 Rails 教程,在第 9.2.2 章中,Hartl 说我们不能使用 capybara 直接向模型发出 put/patch 请求,
这是测试代码:
describe "for wrong users" do
let(:user) { FactoryGirl.create(:user) }
let(:wrong_user) { FactoryGirl.create(:user, email: "wrong@example.com") }
before { valid_signin user}
describe "when submitting a PATCH request to users#update" do
before { patch user_path(wrong_user) }
specify { expect(response).to redirect_to root_path}
end
end
和 valid_signin 最初是这样的:
def valid_signin(user, options = {})
visit signin_path
fill_in "Email", with: user.email
fill_in "Password", with: user.password
click_button "Sign in"
end
这些测试不起作用,因为当我们发出 put 请求时,我们不能使用 capybara 来执行此操作。
是不是这样,我们不能使用 capybara 来测试任何 put/patch 请求?当我们需要测试 put/patch 请求并且我们不能使用 capybara 时,我们应该怎么做?