Вы можете использовать Динамические ERB-кассеты с видеомагнитофоном, вам просто нужно передать параметр :erb
, который может иметь значение true
, или хэш, содержащий переменные шаблона, которые будут переданы в кассета:
ids = [0, 1, 2, 3]
VCR.use_cassette('dynamic_generated_requests', :erb => { :ids => ids }) do
# Make HTTP Requests
end
Файл YAML с ERB
И ваш файл YAML будет выглядеть так:
---
http_interactions:
<% ids.each do |id| %>
- request:
method: post
uri: https://api.example.com/path/to/rest_api/<%= id %>/method
body:
encoding: UTF-8
headers:
content-type:
- application/json
response:
status:
code: 200
message: OK
headers:
cache-control:
- no-cache, no-store
content-type:
- application/json
connection:
- Close
body:
encoding: UTF-8
string: '{"status_code": <%= id %>}'
http_version: '1.1'
recorded_at: Tue, 15 Jan 2019 16:14:14 GMT
<% end %>
recorded_with: VCR 3.0.0
Примечание. Расширение файла .yml
по-прежнему используется, поскольку видеомагнитофон обрабатывает обработку ERB с помощью параметра :erb
.
Отладка: raw_cassette_bytes
Если вы хотите отладить это и убедиться, что YAML-файл выглядит хорошо, вы можете распечатать визуализированный YAML-файл с помощью метода raw_cassette_bytes :
puts VCR.current_cassette.send(:raw_cassette_bytes)
Используйте это в блоке VCR.use_cassette:
VCR.use_cassette('dynamic_generated_requests', :erb => { :ids => ids }) do
puts VCR.current_cassette.send(:raw_cassette_bytes)
# Make HTTP Requests
end