次の Midje テストを作成しました。
(fact (followers-minus-friends ...name...) => ["Dude"]
(provided (idset show-followers ...name...) => #{1 2 3}
(idset show-friends ...name...) => #{1 2}
(userinfos #{3}) => [{:screen_name "Dude"}]))
次の関数を (別の名前空間で) テストします。
(defn followers-minus-friends [screenname]
(let [difference-ids (difference (idset show-followers screenname)
(idset show-friends screenname))
userinfos (userinfos difference-ids)]
(map :screen_name userinfos)))
テストはかなり役に立たないように見えるかもしれませんが、私はミジェに慣れようとしているだけです. どういうわけか、関数 idset が実行されるだけです。これは、provided-clause で戻り値を提供することで防止したいと考えていました。これについて何が説明できるでしょうか?
編集: 上記の状況を再現したい場合に備えて、プロジェクトを Github にアップロードしました: https://github.com/Borkdude/twitter-utils