Skip to content
On this page

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