vcr alternatives and similar shards
Based on the "Testing" category
Do you think we are missing an alternative of vcr or a related project?
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:
Finished in 10:22 minutes 18 examples, 0 failures, 0 errors, 0 pending
Finished in 13.05 seconds 18 examples, 0 failures, 0 errors, 0 pending
The idea of this port is to keep it simple and allow multiple requests to be recorded within a single "cassette" block. The ability to record changed requests to the same endpoint is also important and unavailable in other vcr ports. I have also tried to keep the syntax and methods as close to the Ruby VCR to help.
Other VCR like ports:
Add this to your application's
development_dependencies: vcr: github: spoved/vcr.cr
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
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
VCR.configure do settings.cassette_library_dir = "/some/path/cassettes" end
- Fork it (https://github.com/spoved/vcr.cr/fork)
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create a new Pull Request
- kalinon Holden Omans - creator, maintainer