単体テストを作成しているときに、関数をモックして、関数呼び出しごとに一連の定義済みの値を返す必要がある場合があります。
現在、私は次のようなことをしています:
(testing "fitness-proportionate selection"
; store sequence of rand values in atom, first val is ignored as we always use rest
; normalized fitness: 0: 0 1: 1/6 2: 1/3 3: 1/2
; summed fitness 0: 0 1: 1/6 2: 1/2 3: 1
(let [r (atom [0 1 1/2 1/6 0])] (with-redefs [rand (fn [] (first (swap! r rest)))]
(is (= [3 2 1 0] (fitness-proportionate-selection [0 1 2 3] identity))))))
誰かがこれを行うためのよりエレガントな方法を見つけるのを手伝ってくれますか? 読みやすく、ロジックが少ないもの。これにより、単体テスト自体のエラーが少なくなります。私は現在使用してclojure.test
おり、追加のライブラリを使用したくない.