首页 > 解决方案 > 如何在 Rails 测试中设置 request_id

问题描述

我有一些依赖于request_id设置的代码,但是在 RSpec 3.8 和 Rails 5.1 中进行测试时request_id没有设置。它适用于开发和生产。

我尝试X-Request-Id在规范文件中手动设置标题,但它不起作用。

我不确定这是测试环境中的 Rails 问题还是由 RSpec 引起的。

在我的规范中:

request.headers.add('X-Request-Id', SecureRandom.uuid)
patch model_update_path(model), params: { model: { attr: 'changed' }}
... # actual tests

在我的控制器中

...
def update
  logger.info "Request Id: #{request.request_id}"
  logger.info "X-Request-Id: #{request.header['X-Request-Id']}"
  ... # actual logic
end
...

第一行不记录任何内容,而第二行记录随机 uuid。

我希望该request.request_id方法为测试环境中的每个请求返回一个唯一的 uuid。

标签: ruby-on-railsrspec

解决方案


尝试这个:

patch model_update_path(model), { params: { model: { attr: 'changed' }, 'X-Request-Id' => SecureRandom.uuid }

推荐阅读