如何使用Capybara获取,显示,发布,输入控制器测试?

Dav*_*ite 3 testing capybara rspec2 ruby-on-rails-3

我只是不确定说出来的确切方法是什么..

这告诉我'还没有回应.首先请求页面.

it "should list searches" do
  get 'index'
  page.should have_selector('tr#search-1')
end
Run Code Online (Sandbox Code Playgroud)

这意味着是这样吗?

it "should list searches" do
  get 'index' do
    page.should have_selector('tr#search-1')
  end
end
Run Code Online (Sandbox Code Playgroud)

这种方式似乎并没有真正测试任何东西.

什么是正确的方法?

Dav*_*ite 6

根据这个,水豚不支持PUT和DELETE使用默认的驱动程序的请求.PUT和DELETE通常都是用javascript伪装来容纳基于REST的架构.

我没有检查过,但我相信你可以使用PUT和DELETE与Capybara,如果你使用其中一个与JS兼容的驱动程序,如Selenium.


Jo *_*iss 5

get,post等方法是的一部分功能测试接口为Rails控制器测试,这是一个完全独立的测试系统.你不能在Capybara中使用它们.

对于GET请求,请改用Capybara的visit方法.

对于其他请求类型(POST,PUT,...),要么执行用户所做的操作,要么访问带有表单的页面以填写并提交.或者,如果您正在测试API,请在不使用Capybara的情况下为您的控制器编写功能测试,如下所示:

post :index
response.status.should == 200
response.body.should contain('Hello World')
Run Code Online (Sandbox Code Playgroud)

另请参阅Jonas的帖子,了解为什么不应该使用Capybara测试API.