Rspec-rails: 能够在每个请求规范上添加标头

创建于 2014-11-10  ·  5评论  ·  资料来源: rspec/rspec-rails

我只是找不到一种简单的方法来轻松地为每个请求添加授权标头? 我错过了什么吗? 这似乎应该是针对使用授权标头进行身份验证的 API 的请求规范的标准用例?

最有用的评论

没有办法“自动”设置它。 正如 Jon 所说,大部分rspec-rails是一个瘦包装器,在这种情况下,请求规范是围绕Rails 集成测试的包装器。

基于Rails API ,头文件并不是真正继承自任何东西。 每次都必须唯一地设置它们。 这就是请求的工作方式,客户端每次发出请求时都必须发送标头,这由客户端来管理。

IMO,API 的请求规范应该从消费者的角度记录 API 交互的工作方式。 表明需要始终发送标头以及那些标头是很好的文档。

如果您想自己实现这一点,有几个选择:

ruby def get(path, parameters = nil, headers_or_env = nil) headers_or_env ||= { 'some' => 'defaults' } super end

  • 制作自定义 DSL 助手(Rails 指南有另一个使用会话的

``` 红宝石
RSpec.describe“一些API端点”做

let(:auth_headers) {
  { 'HTTP-AUTHORIZATION' => 'Token token="pancakes"' }
}

def request_widgets
  get api_widgets, '', auth_headers
  response
end

it "gets the widgets" do
  expect(request_widgets).to have_http_status(:success)
end

结尾
``

所有5条评论

rspec-rails是 Rails 测试助手周围的一个薄垫片,所以如果他们没有添加这个功能,我们也没有

没有办法“自动”设置它。 正如 Jon 所说,大部分rspec-rails是一个瘦包装器,在这种情况下,请求规范是围绕Rails 集成测试的包装器。

基于Rails API ,头文件并不是真正继承自任何东西。 每次都必须唯一地设置它们。 这就是请求的工作方式,客户端每次发出请求时都必须发送标头,这由客户端来管理。

IMO,API 的请求规范应该从消费者的角度记录 API 交互的工作方式。 表明需要始终发送标头以及那些标头是很好的文档。

如果您想自己实现这一点,有几个选择:

ruby def get(path, parameters = nil, headers_or_env = nil) headers_or_env ||= { 'some' => 'defaults' } super end

  • 制作自定义 DSL 助手(Rails 指南有另一个使用会话的

``` 红宝石
RSpec.describe“一些API端点”做

let(:auth_headers) {
  { 'HTTP-AUTHORIZATION' => 'Token token="pancakes"' }
}

def request_widgets
  get api_widgets, '', auth_headers
  response
end

it "gets the widgets" do
  expect(request_widgets).to have_http_status(:success)
end

结尾
``

就请求身份验证而言,授权标头与 cookie 标头几乎没有区别。 在请求和控制器规范中,我们都可以访问会话实例,从而使我们能够设置“cookie”标头。

对 API 的请求规范可以记录一组特定测试中的基础知识,包括身份验证。 对于重点是规范经过身份验证的响应的每个规范,这应该不是必需的。

同样,这里的愿望与每个人已经使用的标准 Web 浏览器控制器/请求规范没有什么不同。

@paulwalker我们并不是说这是一个不合理的请求,只是您将其用于错误的项目,请与 rails 团队打开此功能请求

谢谢@JonRowe ,很公平。

此页面是否有帮助?
0 / 5 - 0 等级