1

「提供された」構文のようなものを使用して、Midje (clojure) でプロトコル関数を (スタブではなく) モックする方法はありますか?

これは、Mocking Clojure protocolsの質問と似ていますが、モックを使用しています。

詳細: プロトコルと、それを実装するものを返す関数があります。プロトコルのモックを返す関数をスタブ化し、モックされたプロトコルの「実装」の関数の 1 つに期待を登録したいと思います。

編集 - ここに例があります:

プロトコルがあり、その実装は次のとおりです。

(defprotocol Thiny (go-bump [_ _]))
(deftype TheThing []
  Thiny
  (go-bump [_ _] 23))

プロトコルの実装を返す関数があります。

(defn gimme [] (TheThing.))

TheThingは、DB やネットワーク接続、またはテストで取り除きたいその他の厄介なものである可能性があります。

次に、テストしたい関数があります:

(defn test-me [n]
  (let [t (gimme)]
    (-> t (go-bump n))))

nでgo-bumpを呼び出すようにしたい。

これは、テストを作成する最初の試みです。gimmeによって返されるThinyに対する期待値を設定したいと思います。

(fact
  (test-me 42) => 42
  (provided (gimme) => (reify Thiny (go-bump [_ n] n))))
4

2 に答える 2