Skip to content

Instantly share code, notes, and snippets.

@mbuhot
Created June 15, 2016 05:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mbuhot/93f8b9eea98a14d0c3f64d3c697f1727 to your computer and use it in GitHub Desktop.
Save mbuhot/93f8b9eea98a14d0c3f64d3c697f1727 to your computer and use it in GitHub Desktop.
Swap out genserver implementation per test
defmodule MyService do
def foo() do
GenServer.call(:my_service, :foo)
end
end
defmodule MyServiceFake do
use GenServer
def handle_call(:foo, _from, state) do
{:reply, :fake, state}
end
def start_link do
GenServer.start_link(__MODULE__, nil, name: :my_service)
end
end
defmodule MyService4Real do
use GenServer
def handle_call(:foo, _from, state) do
{:reply, :real, state}
end
def start_link do
GenServer.start_link(__MODULE__, nil, name: :my_service)
end
end
defmodule GenServerSwapOutTest do
use ExUnit.Case
setup(%{service: module}) do
module.start_link()
:ok
end
@tag service: MyServiceFake
test "test fake" do
assert MyService.foo() == :fake
end
@tag service: MyService4Real
test "test real" do
assert MyService.foo() == :real
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment