0

我在看 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 时,我们应该怎么做?

4

1 回答 1

2

Capybara 用于行为驱动程序开发。谁的行为?人类。

一个人可以patch吗?他可以put吗?他不能。只有电脑可以。

一个人,,,,visit可以fill_inclick_button?是的,他能。这就是水豚的目的。

底线,将计算机的动作放入单元测试和控制器测试中,在 Capybara 的集成测试中模仿人类。

于 2013-08-29T07:36:03.147 回答