私は任意の明白な誤差はご容赦くださいClojureのに新たなんだとマクロの動作を再定義。私はredis-clojureライブラリを使用するClojureデータアクセスコードをテストしようとしています。もちろん、私の統合テストは完全なスタックをテストしますが、私のユニットテストはRedisサーバーインスタンスに接続することに依存したくありません。実際のRedisコマンドをMidjeで嘲笑するのは比較的簡単ですが、接続マクロは扱いにくいです。 Midjeドキュメント経由で行うか、見つけることができないよう何
を必要
提案Redisの接続をからかったり、マクロを再定義する方法です。 core.cljから関連するトップレベルの接続マクロは次のとおりです。
(defmacro with-server
"Evaluates body in the context of a connection to Redis server
specified by server-spec.
server-spec is a map with any of the following keys:
:host (\"127.0.0.1\")
:port (6379)
:db (0)
:timeout (5000)
:password (nil)"
([server-spec & body]
`(with-connection connection# *pool* ~server-spec
(binding [redis.vars/*channel* (make-direct-channel connection#)]
[email protected]))))
(original code in context here)
私は私のテストコードでマクロを再定義することができるように表示され、機能のdoesnでマクロをラップしていません私の結果を生み出すためにはまだ身体を処刑する必要があるので、私はそれ以上の進歩を得ることはできません。私が理想的にやってみたいのは、接続マクロに渡された本体を実行し、残りのマクロを破棄することです。何か案は?
正確にこの問題に苦労した後、私はhttps:// githubを見つけました。com/ptaoussanis/carmine/issues/16そして、私の単体テストがローカルのredisインスタンスにヒットするのはまったく問題ないと判断しました –