使用RSpec和VCR测试Web API

And*_*art 8 ruby api rspec vcr

我正在编写一个API包装器作为gem,我想使用RSpec测试API响应.

这个问题是所有的API请求都是使用GET生成的,并且在url中包含一个API密钥:

例如 game/metadata/{api_key}

这给测试带来了问题,因为我不想将API密钥保存在git存储库历史记录中.有什么方法可以进行这些规范测试,最好使用RSpec/VCR,而不是将API密钥存储在版本控制中?

我尝试过使用环境变量,但VCR仍然存储整个请求,而不仅仅是响应体.

Myr*_*ton 20

VCR有一个专门针对以下情况的配置选项:

VCR.configure do |c|
  c.filter_sensitive_data("<API_KEY>") { MyAPIClient.api_key }
end
Run Code Online (Sandbox Code Playgroud)

有关更大的示例,请参阅https://www.relishapp.com/myronmarston/vcr/docs/configuration/filter-sensitive-data.