私はPhoenixアプリ(フロントエンドのない単なる安らかなAPIです)を持っていて、コントローラーの1つがテストしたいことをしますが、コントローラーの最後で、ペイロードをワーカーに送信するディスパッチャーを呼び出します(poolboy の下で実行) を使用して、受信したペイロードをバックグラウンドで処理します。
私のコントローラー テストでは、ワーカーが行っていることを実際にテストしたくはありません。ワーカーのディスパッチャーが正しいペイロードで呼び出されたことを知りたいだけです (例、 calledWith() )。
そして理想的にはディスパッチャー関数はスタブ化されるため、実際のものが実行されることはありません。
ディスパッチャに追加のパラメータを渡して、ワーカ上でコードが実行されないようにすることもできますが、それは非常に厄介なように見えますが、スタブはアイデアのようです。
ありがとう
編集
ディスパッチャ コード:
defmodule Convert.Dispatcher do
def dispatch(data) fo
spawn (fn() -> parallel(data) end)
end
def parallel(data) do
#pass off to poolboy
end
end
テストのモック:
with_mock Convert.Dispatcher, [dispatch: fn(_opts) -> :ok end] do
response = conn(:post, "/", data) |> send_request
body = response.resp_body |> Poison.decode!
assert response.status == 201
assert called Convert.Dispatcher.dispatch("")
end