Appearance
VCR
VCR é uma gem que nos permite gravar as requisições HTTP executadas nos nossos testes em formato de cassetes para que possamos replicar a gravação com os resultados em testes futuros. Assim, é possível basicamente criar stubs de requests. Isso nos permite criar testes mais rápidos, preciso, deterministicos e independentes do estado real do serviço que estamos requisitando.
Como adicionar o VCR nos testes do rspec?
Para que seus testes gerem cassetes ao serem executados, é necessário primeiro adicionar o símbolo :vcr ao teste que será realizado:
ruby
RSpec.describe Library::SendController, :vcr, type: :request do
#...
end
Caso desejado, é possível também adicionar o símbolo a cenários específicos:
ruby
it "returns http success", :vcr do
#...
end
Gravação de cassetes
O VCR possuir alguns modos diferentes para gerar novos cassetes. Por padrão, neste projeto mantemos o modo de gravação no :once que gera novas gravações na pasta spec/cassetes
apenas se a requisição não existir anteriormente. É possível alterar o modo para o :all apenas adicionando a variável de ambiente VCR_MODE: rec
ao seu application.yml. De maneira similar, para limpar todos os cassetes, basta adicionar a var de ambiente VCR_CLEAN_UP: ''
. Caso queira alterar o modo manualmente, isso pode ser feito alterando no arquivo spec/support/vcr.rb
conforme sua necessidade:
ruby
VCR.configure do |config|
config.default_cassette_options = {
record: :all,
}
end
Modos de Gravação
:none
- Da um Replay em interações já gravadas em cassetes
- Gera um erro caso novas interações não tenham cassetes já criados
:once
- Da um Replay em interações já gravadas em cassetes
- Grava novas interações em cassetes
:all
- Grava novas interações em cassetes
- Nunca da replay, sempre cria todas as interações de novo