2016-03-25 14 views
0

私はClojureScriptプロジェクトで次のコードを持っている:事前および事後条件のClojureScript高度な編集

(ns project.lib 
    (:require [cljs.test :refer-macros [is]])) 

(defn my-fn [p] 
    {:pre [(is (#{:allowed-key :another-allowed-key} p))]} 
    ;;... 
) 

私は:pre:postアサーションの動作を制御することが可能かどうかを知りたい、と一般的でしょうパラメータチェックに関連するコードが含まれていないことを確認する方法は何ですか?

注:私は:closure-defineコンパイラオプションを認識していますが、この特定のケースにどのように適用するかはわかりません。

答えて

1

あなたは:pre:postアサーションを含むすべてのアサーションを、排除するためにtrueにコンパイラオプション:elide-assertsを設定することができます。

このフラグは、:advancedとは独立しており、本番モードのアサーションを削除するにはこのモードでも設定する必要があります。

https://github.com/clojure/clojurescript/wiki/Compiler-Options#elide-asserts

はまた、一般的に、cljs.test名前空間のみ("src"とは対照的に、おそらく"test"下で)別のディレクトリに配置されるユニットテストの名前空間で使用される、ことを注意し、使用しているかどうかを確認leinの場合は、実動ビルドにテストを含まないように:source-pathsを使用します。

:preを使用して:postことがちょうどコード「定期」を使用し、生産で完全に罰金です、と言ったではなく、マクロcljs.testisの述語。具体的な例として、isを削除することができます。前提条件は単に真実に評価する必要があるからです。

関連する問題