Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stevegraham/hypermock
HTTP request stubbing and expectation Elixir library
https://github.com/stevegraham/hypermock
Last synced: 2 months ago
JSON representation
HTTP request stubbing and expectation Elixir library
- Host: GitHub
- URL: https://github.com/stevegraham/hypermock
- Owner: stevegraham
- License: mit
- Created: 2015-06-28T09:16:50.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-11-14T11:42:08.000Z (about 9 years ago)
- Last Synced: 2024-08-02T02:13:30.150Z (5 months ago)
- Language: Elixir
- Size: 160 KB
- Stars: 24
- Watchers: 3
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - HTTP request stubbing and expectation Elixir library. (Testing)
- fucking-awesome-elixir - hypermock - HTTP request stubbing and expectation Elixir library. (Testing)
- awesome-elixir - hypermock - HTTP request stubbing and expectation Elixir library. (Testing)
README
# HyperMock
HTTP request stubbing and expectation Elixir library. Intercepts HTTP calls and
either returns a stubbed response if that request was stubbed or raises an error
if a matching request was not found in the stubbed requests.The idea is to provide tools to explicitly verify properties of the actual request
rather than loose stubbing to return canned responses in your tests.Unused stubs in your tests will also raise errors.
```elixir
defmodule RequestTest do
use HyperMockdef fail do
HyperMock.intercept do
# No expectations have been set. This will raise an error.
HTTPotion.get "http://example.com:3000/users", [body: "hello=world", headers: ["User-Agent": "My App"]]
end
enddef yay do
HyperMock.intercept do
request = %Request{ method: :get, uri: "http://lol.biz.info", headers: ["User-Agent": "My App"] }
response = %Response{ body: "LOOOOOOOOOOOOL m8!" }stub_request request, response
# This will return a HTTPotion.Response struct with a 200 status and body of "LOOOOOOOOOOOOL m8!"
HTTPotion.get("http://lol.biz.info", headers: ["User-Agent": "My App"]) |> inspect |> IO.puts
end
end
end
```# Limitations
Only works with ibrowse synchronous requests right now. If you want to add support
for asynchronous requests or another client open an issue and let's talk about it :)# Contributing
If you have an idea please open an issue to start discussion first. The feature may
have been discussed previously or in development.