1
私はElixir/Phoenixでの統合テストをしばらく書いていましたが、最近Exqを追加してバックグラウンドタスクを処理しました。私は他のExq(または等価物)がインテグレーションテストでタスクをキューに登録する方法をどのように処理しているのか不思議に思っていました。私は実際にテスト中にこれらのタスクを待ち行列に入れたくはありません。Exq(または同等のもの)とElixirの統合テスト
私はElixir/Phoenixでの統合テストをしばらく書いていましたが、最近Exqを追加してバックグラウンドタスクを処理しました。私は他のExq(または等価物)がインテグレーションテストでタスクをキューに登録する方法をどのように処理しているのか不思議に思っていました。私は実際にテスト中にこれらのタスクを待ち行列に入れたくはありません。Exq(または同等のもの)とElixirの統合テスト
great article about such thingsがあります。基本的に、テスト中に実行したくない呼び出しがある場合は、それらを引数にするモジュールを渡します。
def my_func(arg1, queue \\ Exq) do
queue.somoething(arg1)
end
この方法で、あなたのコード内で、あなたは通常my_func("argument")
以前のようにそれを呼び出すことができますが、テストコードでは、このようなモックを渡すことができます。
defmodule ExqMock do
def something(arg1) do
:return_some_static_value
end
end
test "my_func works" do
assert my_func("something", ExqMock) == :return_some_static_value
end