Bookish spork

Build StatusCoverage Statuscodecov

Hex.pmHex.pmHex.pmHex.pm

An erlang library to test http requests. Inspired by Ruby's WebMock.

Suitable for Elixir.

Rationale

There are several ways to test your http interaction

The last approach is the best IMHO. It is absolutely http-client agnostic. It doesn't require internet connection or any external utilities.

bookish_spork provides you facilities to test your requests with real http server.

Usage

Bookish spork supports Erlang/OTP 20.3 or later.

First step: add to your rebar config

{profiles, [
{test, [
{deps, [
{bookish_spork, "0.2.0"}
]}
]}
]}.

Second: start server in your tests.

bookish_spork:start_server().

It starts process without link. Thus you can use it in init_per_group and in init_per_suite callbacks. Default port is 32002 but you can specify any port you like with bookish_spork:start_server/1

Stub request

The simplest stub you can do is

bookish_spork:stub_request().

It will stub your requests with 204 No Content response with empty body.

If you need specify response you easily can do this:

bookish_spork:stub_request(Status, Headers, Content).

Capture request

As usual the main goal is to test that you send the correct request

{ok, Request} = bookish_spork:capture_request().

It returns you an opaque structure of the request. You can inspect it with

Bypass comparision

An elixir library bypass does pretty much the same. And illustrates the same approach. It starts a cowboy web-server to replace a real service for test

But bookish_spork has some advantages:

Examples

See examples dir.