2016-05-18 8 views
1

私はElixir/Phoenixでの統合テストをしばらく書いていましたが、最近Exqを追加してバックグラウンドタスクを処理しました。私は他のExq(または等価物)がインテグレーションテストでタスクをキューに登録する方法をどのように処理しているのか不思議に思っていました。私は実際にテスト中にこれらのタスクを待ち行列に入れたくはありません。Exq(または同等のもの)とElixirの統合テスト

答えて

1

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 
関連する問題