README.md

# Dummy

Elixir mocking that makes sense. Dummy relies on meck and exposes a simpler way
to mock methods than mock, thanks to a couple of assumptions:

- passthrough is enabled
- mocked methods return their first argument


### Installing

```elixir
    {:dummy, "~> 1.0.0", only: :test}
```

### Usage

```elixir
test "my test" do
    dummy Module, [method1, method2] do
        result = Module.method3("args")
        called(Module.method1("args"))
        called(Module.method2("args"))
        assert result == "expected"
    end
end
```

In mock this would be a bit longer:

```elixir
test "my test" do
    with_mock Module, [:passthrough],
      method1: fn path -> path end,
      method2: fn yaml -> yaml end do
      result = Module.method3("args")
      assert_called(Module.method1("args"))
      assert_called(Module.method2("args"))
      assert result == "expected"
    end
end
```

You can disable passthrough:

```elixir
test "my test" do
    dummy Module, [method1], passthrough: false do
        # ...
    end
end
```

You can specify a return value:

```elixir
test "my test" do
    dummy Module, [{method1, "value"}] do
        assert Module.method1("anything") == "value"
    end
end
```

Or replacements:

```elixir
test "my test" do
    dummy Module, [{method1, fn _x, _y -> "value" end}] do
        assert Module.method1("anything", "works") == "value"
    end
end
```