(constantly (throw (Exception. "Don't call me")))
私はconstantly
ためにClojureのdocsに基づいて、これを実行することが期待方法です:引数を無視して常に例外をスローする関数を作成する方法は?
引数と戻りxの任意の数を取る関数を返します
(constantly x)
。
しかし、私が常にスローするモック関数を作成しようとすると、すぐに例外がスローされ、ここで関数を定義しようとしています。 constantly
はすぐに身体を評価し、結果をキャッシュするはずですか?私はCの恐ろしい未定義の行動(この場合、「すべての賭けはあなたが副作用に頼ってしまうとオフになる」)に相当するものを実行していますか?
user=> (constantly (throw (Exception. "but not right now")))
Exception but not right now user/eval8734 (form-init1747541642059004341.clj:1)
user=> (repeatedly (throw (Exception. "but not right now")))
Exception but not right now user/eval8736 (form-init1747541642059004341.clj:1)
コールバック関数をテストでモックして呼び出すとエラーになることはありますか?
をスナップああ、私は問題を参照して、 '((例外をスロー「ではなく、今」)。)' expressioですnは例外をスローします。定数または評価する式ではありません。 「絶えず」ここで働くつもりはない... –