我只是不确定说出来的确切方法是什么......
这告诉我'还没有回应。首先请求页面。'
it "should list searches" do
get 'index'
page.should have_selector('tr#search-1')
end
这意味着是这样吗?
it "should list searches" do
get 'index' do
page.should have_selector('tr#search-1')
end
end
这种方式似乎并没有真正测试任何东西。
正确的方法是什么?
答案 0 :(得分:6)
根据to this,Capybara不支持使用默认驱动程序的PUT和DELETE请求。 PUT和DELETE通常都是用javascript伪装来容纳基于REST的架构。
我没有检查过,但我相信你可以使用PUT和DELETE与Capybara,如果你使用其中一个与JS兼容的驱动程序,如Selenium。
答案 1 :(得分:5)
get
,post
等方法是Rails控制器测试的functional test interface的一部分,这是一个完全独立的测试系统。你不能在Capybara中使用它们。
对于GET请求,请改用Capybara的visit
方法。
对于其他请求类型(POST,PUT,...),要么执行用户所做的操作,要访问带有表单的页面以填写并提交。或者,如果您正在测试API,请在不使用Capybara的情况下为您的控制器编写功能测试,如下所示:
post :index
response.status.should == 200
response.body.should contain('Hello World')
另见Jonas在why you shouldn't test APIs with Capybara上的帖子。
答案 2 :(得分:0)
我认为您通常会使用visit
与Capybara一起访问网页。
it 'should list searches' do
visit '/'
page.should have_selector('tr#search-1')
end