首页 > 解决方案 > 如何使用 Rspec 检查方法内的请求标头?

问题描述

我有一个方法会影响其他 API。我做了一个条件来决定在发布到该 API 时将使用哪个身份验证令牌。例子:

class OrderFee
  def perform
    get_pricing
  end
  
  private

  def get_pricing
    payload = {
       from: "a",
       to: "b"
    }

    authorization = ''
    if Config.UsingFirstToken?
       authorization = "first_token"
    else
       authorization = "second_token"
    end

    response = Connection.MyCourier.post(url, payload) do |req|
       req.headers['Authorization'] = authorization
    end
    response.body
  end
end

我想使用 Rspec 制作 2 个测试用例,以确保如果为Config.UsingFirstToken真,它将使用 API 访问 API first_token,否则。我可以检查此方法的返回值,但我找不到expect从该 POST 操作中获取标题的方法

标签: ruby-on-railsrubyunit-testingrspec

解决方案


您可以访问规范中的请求对象。

期望标题等于这样:

expect(request.headers['Authorization']).to eq("first_token")

或者你期望的令牌是什么。


推荐阅读