2017-11-07 5 views
0

私のPhoenixアプリケーションでは、DBからデータを取り出してAgentにキャッシュする機能があります。 DBが実際に照会されることを初めて値が要求されるときだけ保証するためにテストを書く方法はありますか?DBが照会されなかったことをテストする方法

答えて

1

私はこれをテストする最も簡単な方法はにある言う:

  1. コールエージェントと値
  2. を保存し、再びデータベース
  3. コールエージェントに値を変更して、最初の値を期待します
:ok = DB.insert("old_value") 
assert {:ok, "old_value"} = YourCache.get_value() 
:ok = DB.insert("new_value") 
assert {:ok, "old_value"} = YourCache.get_value() 
1

これを行うための適切な方法は、例えばでDBインスタンスを模擬することですMoxを使用して、DBクエリにexplicit contactを使用します。


Ectoを使用している場合は、それ自体が動作します。 config/test.exsファイルを調べて、テストでEcto.Adapters.SQL.Sandboxを使用していることを確認します。 sandbox.exファイル全体をテストスイートにコピーし、コンソールなどにIO.putsのようなものを実行するようにConnection.handle_execute/4を変更します。このプールを使用するようにtest.exs設定を変更します。次に、最初に印刷されたことを確認し、もう一度印刷されていないことを確認します。ここではやり過ぎのように見えるかもしれませんが、長い目で見れば、このアプローチは(私はすぐにではなく、後から言うと思います。)バック支払うことになる

+0

優秀な読書のもの! – mhutter

関連する問題