Ruby on rails 3 向步骤定义中的控制器发送删除请求
你们中有人知道如何做(实现)这样的事情吗: 示例功能Ruby on rails 3 向步骤定义中的控制器发送删除请求,ruby-on-rails-3,authentication,rspec,devise,cucumber,Ruby On Rails 3,Authentication,Rspec,Devise,Cucumber,你们中有人知道如何做(实现)这样的事情吗: 示例功能 ... scenario: unauthorized user cannot delete event Given list of events When event is deleted Then nothing happen ... 示例_步骤.rb ... When /^event is deleted$/ do delete (_path_to_controller_ + "/%d" % @events.first(
...
scenario: unauthorized user cannot delete event
Given list of events
When event is deleted
Then nothing happen
...
示例_步骤.rb
...
When /^event is deleted$/ do
delete (_path_to_controller_ + "/%d" % @events.first().id)
...
# Tell if authentication through HTTP Basic Auth is enabled. False by default.
# It can be set to an array that will enable http authentication only for the
# given strategies, for example, `config.http_authenticatable = [:token]` will
# enable it only for token authentication.
# config.http_authenticatable = false
当然,在这一步中,我想根据rake路由的结果发送一个请求,类似于这样(我已经将资源移动到admin path下):
耙路径
...
DELETE /admin/controller_name/:id(.:format) controller_name#destroy
...
我已经在互联网上试验和搜索了很长时间,但我不知道怎么做:(我过去用过向API发送删除请求:
When /^event is deleted$/ do
header 'Accept', 'application/json'
header 'Content-Type', 'application/json'
authorize "username", "password"
url = _path_to_controller_ + "/%d" % @events.first().id)
delete url
end
话虽如此,我不确定我是否会建议您这样做。是否将从界面中的某些操作(如单击按钮)中删除该事件?如果是这样,您应该使用capybara登录并单击按钮。这将为您提供完全集成覆盖的好处,您不必处理Rack::Test(不是说这是一个坏工具,而是另一个工具)。Uff我已经解决了这个问题。 非常感谢比灵顿 因此,在这篇文章中,我将总结我的时间与问题及其解决办法 相关主题和文档
...
When /^event is deleted$/ do
delete (_path_to_controller_ + "/%d" % @events.first().id)
...
# Tell if authentication through HTTP Basic Auth is enabled. False by default.
# It can be set to an array that will enable http authentication only for the
# given strategies, for example, `config.http_authenticatable = [:token]` will
# enable it only for token authentication.
# config.http_authenticatable = false
因此,如果我们想让上述测试正常工作,我们需要将最后一行更改为:
config.http_authenticatable = true
但问题是我们真的想这么做吗
最后一点注意:标题调用是可选的。记录会被删除,无论有没有标题调用
- 使用它们删除状态代码为204无内容的退货
- 如果没有它们,则删除状态代码为302的返回
delete
返回Rack::MockResponse
,错误:{“错误”:“您需要登录或注册才能继续。”
,但我可以通过capybara的访问
打开页面,这意味着我登录了!?。我是rails的新手,所以我可能遗漏了一些明显的东西?这是因为Rack::Test请求在单独的进程中运行,需要自己的用户登录。您添加了授权调用吗?是的,我添加了…问题是gem Desive和这是默认配置。