hypermock alternatives and similar packages
Based on the "Testing" category.
Alternatively, view hypermock alternatives based on common mentions on social networks and blogs.
-
ex_machina
Flexible test factories for Elixir. Works out of the box with Ecto and Ecto associations. -
wallaby
Wallaby helps test your web applications by simulating user interactions concurrently and manages browsers. -
proper
PropEr (PROPerty-based testing tool for ERlang) is a QuickCheck-inspired open-source property-based testing tool for Erlang. -
mecks_unit
A package to elegantly mock module functions within (asynchronous) ExUnit tests using meck. -
test_selector
A set of test helpers that make sure you always select the right elements in your Phoenix app. -
cobertura_cover
Writes a coverage.xml from mix test --cover file compatible with Jenkins' Cobertura plugin. -
mix_test_interactive
Interactive test runner for mix test with watch mode. -
ExopData
A library that helps you to write property-based tests by providing a convenient way to define complex custom data generators.
Get performance insights in less than 4 minutes
Do you think we are missing an alternative of hypermock or a related project?
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.
defmodule RequestTest do
use HyperMock
def 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
end
def 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.