vcr

A HTTP capture and replay implementation for crystal
0.1.1 released
spoved/vcr.cr
58 7 3
spoved

vcr

VCR for Crystal!

Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.

Example reduction in test time with over 2k RESTful requests:

  • Without VCR
Finished in 10:22 minutes
18 examples, 0 failures, 0 errors, 0 pending
  • With VCR
Finished in 13.05 seconds
18 examples, 0 failures, 0 errors, 0 pending

Installation

Add this to your application's shard.yml:

development_dependencies:
  vcr:
    github: spoved/vcr.cr

Usage

require "vcr"
require "http/client"

load_cassette("cassette-one") do
  response = HTTP::Client.get("https://jsonplaceholder.typicode.com/todos/1")
end

You can also record multiple requests within a single block:

load_cassette("cassette-two") do
  r1 = HTTP::Client.get("https://jsonplaceholder.typicode.com/todos/1")
  r2 = HTTP::Client.get("https://jsonplaceholder.typicode.com/todos/2")
end

To easily reset the cassette and record, simply add the :record argument:

load_cassette("cassette-two", :record) do
  r1 = HTTP::Client.get("https://jsonplaceholder.typicode.com/todos/1")
  r2 = HTTP::Client.get("https://jsonplaceholder.typicode.com/todos/2")
end

To record difference in the same response add the :in_order argument. This Will record and play back the VCR in order the requests occurred (recording new ones if missing).

VCR.use_cassette("cassette-one", :record, :in_order) do
  r1 = HTTP::Client.get("https://jsonplaceholder.typicode.com/todos")
  HTTP::Client.delete("https://jsonplaceholder.typicode.com/todos/1")
  r2 = HTTP::Client.get("https://jsonplaceholder.typicode.com/todos")
end

Customize the location of where the cassettes are stored. The default is spec/fixtures/vcr.

VCR.configure do
  settings.cassette_library_dir = "/some/path/cassettes"
end

Contributing

  1. Fork it (https://github.com/spoved/vcr.cr/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • kalinon Holden Omans - creator, maintainer
vcr:
  github: spoved/vcr.cr
  version: ~> 0.1.1
License MIT
Crystal 0.25.1

Authors

Dependencies 1

  • habitat master
    {'branch' => 'master', 'github' => 'luckyframework/habitat'}

Development Dependencies 0

Dependents 4

Last synced .
search fire star recently